name: Charlie Belinky
The source for my dataset is: https://www.kaggle.com/andrewmvd/doom-crossing?select=doom_crossing_dataset.csv. This dataset contains 1597 image posts extracted from both r/doom and r/animalcrossing, including metadata. Images and metadata come from the source reddit post including post title, upvotes, downvotes, time of post creation, url, etc.
The target is the actual image. I plan to use this dataset to train models that are able to differentiate an image from the Animal Crossing and Doom subreddits.
import sys
!$sys.executable -m pip install tensorflow
Requirement already satisfied: tensorflow in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (2.5.0rc3) Requirement already satisfied: keras-nightly~=2.5.0.dev in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (2.5.0.dev2021032900) Requirement already satisfied: numpy~=1.19.2 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.19.5) Requirement already satisfied: opt-einsum~=3.3.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (3.3.0) Requirement already satisfied: h5py~=3.1.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (3.1.0) Requirement already satisfied: protobuf>=3.9.2 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (3.15.8) Requirement already satisfied: astunparse~=1.6.3 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.6.3) Requirement already satisfied: six~=1.15.0 in c:\users\charlie\appdata\roaming\python\python39\site-packages (from tensorflow) (1.15.0) Requirement already satisfied: gast==0.4.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (0.4.0) Requirement already satisfied: typing-extensions~=3.7.4 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (3.7.4.3) Requirement already satisfied: wheel~=0.35 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (0.36.2) Requirement already satisfied: grpcio~=1.34.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.34.1) Requirement already satisfied: tensorflow-estimator<2.6.0,>=2.5.0rc0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (2.5.0rc0) Requirement already satisfied: tensorboard~=2.5 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (2.5.0) Requirement already satisfied: wrapt~=1.12.1 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.12.1) Requirement already satisfied: termcolor~=1.1.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.1.0) Requirement already satisfied: absl-py~=0.10 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (0.12.0) Requirement already satisfied: flatbuffers~=1.12.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.12) Requirement already satisfied: google-pasta~=0.2 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (0.2.0) Requirement already satisfied: keras-preprocessing~=1.1.2 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorflow) (1.1.2) Requirement already satisfied: setuptools>=41.0.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (49.2.1) Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (0.6.0) Requirement already satisfied: google-auth<2,>=1.6.3 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (1.30.0) Requirement already satisfied: requests<3,>=2.21.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (2.25.1) Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (1.8.0) Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (0.4.4) Requirement already satisfied: markdown>=2.6.8 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (3.3.4) Requirement already satisfied: werkzeug>=0.11.15 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from tensorboard~=2.5->tensorflow) (1.0.1) Requirement already satisfied: rsa<5,>=3.1.4; python_version >= "3.6" in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (4.7.2) Requirement already satisfied: cachetools<5.0,>=2.0.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (4.2.2) Requirement already satisfied: pyasn1-modules>=0.2.1 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (0.2.8) Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (4.0.0) Requirement already satisfied: certifi>=2017.4.17 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (2020.12.5) Requirement already satisfied: idna<3,>=2.5 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (2.10) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (1.26.4) Requirement already satisfied: requests-oauthlib>=0.7.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow) (1.3.0) Requirement already satisfied: pyasn1>=0.1.3 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from rsa<5,>=3.1.4; python_version >= "3.6"->google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (0.4.8) Requirement already satisfied: oauthlib>=3.0.0 in c:\users\charlie\appdata\local\programs\python\python39\lib\site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow) (3.1.0) WARNING: You are using pip version 20.2.3; however, version 21.1.1 is available. You should consider upgrading via the 'C:\Users\Charlie\AppData\Local\Programs\Python\Python39\python.exe -m pip install --upgrade pip' command.
from mpl_toolkits.mplot3d import Axes3D
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt # plotting
import matplotlib.image as mpimg
plt.style.use('seaborn')
import numpy as np # linear algebra
import os # accessing directory structure
import cv2
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import pathlib
from scipy import ndimage
from sklearn.metrics import accuracy_score,classification_report,confusion_matrix
from tensorflow.keras.utils import plot_model, to_categorical
from tensorflow.keras import models, layers
from tensorflow.keras.preprocessing.image import load_img, img_to_array
from tensorflow.keras import callbacks
from tensorflow.keras.callbacks import TensorBoard, ModelCheckpoint
import seaborn as sns
import random
ac = pd.read_csv("archive/animal_crossing_dataset.csv")
doom = pd.read_csv("archive/doom_crossing_dataset.csv")
data = pd.concat([ac, doom])
data.shape
(1596, 11)
ac_filePath = "archive/images/animal_crossing"
doom_filePath = "archive/images/doom"
ac.head()
| subreddit | id | title | ups | downs | upvote_ratio | total_awards_received | num_comments | created_utc | url | filename | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | AnimalCrossing | g6ra3l | Elijah Wood visits a fan's island after seeing... | 103447 | 0 | 0.96 | 7 | 1527 | 1.587664e+09 | https://i.redd.it/yjrafuspulu41.png | yjrafuspulu41.png |
| 1 | AnimalCrossing | gp8bts | Amazing idea my girlfriend came up with | 85186 | 0 | 0.93 | 16 | 1175 | 1.590253e+09 | https://i.redd.it/2ehmq0fjpj051.jpg | 2ehmq0fjpj051.jpg |
| 2 | AnimalCrossing | g8jju6 | I just... really like Blathers | 81436 | 0 | 0.95 | 28 | 903 | 1.587926e+09 | https://i.redd.it/a2vvzng7g7v41.jpg | a2vvzng7g7v41.jpg |
| 3 | AnimalCrossing | gempba | I couldn't let my boy down. [OC] | 72708 | 0 | 0.96 | 24 | 522 | 1.588781e+09 | https://i.redd.it/t88z1sn736x41.jpg | t88z1sn736x41.jpg |
| 4 | AnimalCrossing | fuv26r | My island is called Ravioli and I just finishe... | 70357 | 0 | 0.96 | 9 | 563 | 1.586012e+09 | https://i.redd.it/176wf6duetq41.jpg | 176wf6duetq41.jpg |
doom.head()
| subreddit | id | title | ups | downs | upvote_ratio | total_awards_received | num_comments | created_utc | url | filename | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Doom | gtli3b | And always remember | 39007 | 0 | 0.94 | 1 | 531 | 1.590872e+09 | https://i.redd.it/ksn72cinsy151.jpg | ksn72cinsy151.jpg |
| 1 | Doom | fnj4e5 | Remember to have fun | 30071 | 0 | 0.96 | 10 | 1158 | 1.584966e+09 | https://i.redd.it/ik4d2mpi1fo41.jpg | ik4d2mpi1fo41.jpg |
| 2 | Doom | gemj1h | Can we please send our appreciacion to the lea... | 27189 | 0 | 0.92 | 5 | 965 | 1.588780e+09 | https://i.redd.it/y5pddy7h16x41.jpg | y5pddy7h16x41.jpg |
| 3 | Doom | fzhpqt | This painting from this subreddit a year ago, ... | 22948 | 0 | 0.97 | 1 | 296 | 1.586636e+09 | https://i.redd.it/jrk0eogay8s41.jpg | jrk0eogay8s41.jpg |
| 4 | Doom | g4v23f | Bethesda, you can still do the right thing her... | 19896 | 0 | 0.96 | 34 | 956 | 1.587397e+09 | https://i.redd.it/7c3lyx28tzt41.jpg | 7c3lyx28tzt41.jpg |
ac.sort_values('ups', ascending=False).head(10)[['title','ups']]
| title | ups | |
|---|---|---|
| 0 | Elijah Wood visits a fan's island after seeing... | 103447 |
| 1 | Amazing idea my girlfriend came up with | 85186 |
| 2 | I just... really like Blathers | 81436 |
| 3 | I couldn't let my boy down. [OC] | 72708 |
| 4 | My island is called Ravioli and I just finishe... | 70357 |
| 5 | Made a nice-looking park | 70254 |
| 6 | Animal Crossing, but a Concept. | 69982 |
| 7 | Welcome to my onlyfans | 69222 |
| 8 | 💛💛💛 | 68880 |
| 9 | I regret giving Beardo the towel wrap every si... | 68510 |
doom.sort_values('ups', ascending=False).head(10)[['title','ups']]
| title | ups | |
|---|---|---|
| 0 | And always remember | 39007 |
| 1 | Remember to have fun | 30071 |
| 2 | Can we please send our appreciacion to the lea... | 27189 |
| 3 | This painting from this subreddit a year ago, ... | 22948 |
| 4 | Bethesda, you can still do the right thing her... | 19896 |
| 5 | Found on one of the OST comments. Thought it b... | 18220 |
| 6 | I made a skin for the Slayer based on my favou... | 17016 |
| 7 | At least my hands are getting a workout... | 16762 |
| 8 | Rip and Tear, until it is done. | 16299 |
| 9 | Front Page of IGN This Morning | 15074 |
ac_fileNames = list(ac.filename.values)
doom_fileNames = list(doom.filename.values)
random.seed(123)
ac_subset = random.sample(ac_fileNames, 25)
doom_subset = random.sample(doom_fileNames, 25)
def plot_images(file_subset, ac_flag):
plt.figure(figsize=(15,15))
for i in range(25):
if ac_flag:
load_img = mpimg.imread(os.path.join(ac_filePath,file_subset[i]))
else:
load_img = mpimg.imread(os.path.join(doom_filePath,file_subset[i]))
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(load_img)
plt.show()
Random sample of images from each dataset below
plot_images(ac_subset, True)
plot_images(doom_subset, False)
These images are taken from respective subreddits from animal crossing and doom eternal (r/doom and r/animalcrossing). This means that the datasets not only include screenshots of both games, but also memes that may contain little to no assets related to either game in the image.
Some images are only text, which is more difficult to classify.
Some memes formats are used on both subreddits.
Some memes about Animal Crossing include refrences to Doom and vice versa, which can make classification difficult.
Since I was not given a train and test set of images from the Kaggle source, I made my own from the directory of images. In total, the 'animal_crossing' and 'doom' image datasets contained a combined 1,680 images. I decided to take 1000 images in total for the train sets, and the remaining 597 images for the test set. This left me with the following number of images in each set:
train
ac- 459 images
doom- 541 images
test
ac- 298 images
doom- 299 images
code source https://www.geeksforgeeks.org/python-image-classification-using-keras/
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Model, Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
from keras.layers.normalization import BatchNormalization
img_width, img_height = 800, 800 # chosen image dimensions of 800x800
train_data_dir = 'archive/train'
validation_data_dir = 'archive/test'
nb_train_samples =1000
nb_validation_samples = 597
epochs = 10
batch_size = 16
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
model = Sequential()
model.add(Conv2D(32, (2, 2), input_shape=input_shape)) # Conv2D is the layer to convolve the image into multiple images
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2))) # MaxPooling2D is used to max pool the value from the given size matrix and same is used for the next 2 layers. then, Flatten is used below to flatten the dimensions of the image obtained after convolving it.
model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64)) # Dense is used to make this a fully connected model and is the hidden layer.
model.add(Activation('relu'))
model.add(Dropout(0.5)) # Dropout is used to avoid overfitting on the dataset.
model.add(Dense(1)) # Dense is the output layer contains only one neuron which decide to which category image belongs.
model.add(Activation('sigmoid'))
# Compile function is used here that involve use of loss, optimizers and metrics.here loss function used is binary_crossentropy, optimizer used is rmsprop.
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
train_datagen = ImageDataGenerator( #ImageDataGenerator rescales the image, applies shear in some range, zooms the image and does horizontal flipping with the image. This ImageDataGenerator includes all possible orientation of the image.
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory( # train_datagen.flow_from_directory is the function that is used to prepare data from the train_dataset directory Target_size specifies the target size of the image.
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory( # test_datagen.flow_from_directory is used to prepare test data for the model and all is similar as above.
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
model.fit_generator( # fit_generator is used to fit the data into the model made above, other factors used are steps_per_epochs tells us about the number of times the model will execute for the training data.
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator, # validation_data is used to feed the validation/test data into the model.
validation_steps=nb_validation_samples // batch_size) # validation_steps denotes the number of validation/test samples.
Found 1000 images belonging to 2 classes. Found 597 images belonging to 2 classes. Epoch 1/10 62/62 [==============================] - 182s 3s/step - loss: 13.8641 - accuracy: 0.5895 - val_loss: 0.6195 - val_accuracy: 0.6537 Epoch 2/10 62/62 [==============================] - 180s 3s/step - loss: 0.6180 - accuracy: 0.6645 - val_loss: 0.5745 - val_accuracy: 0.7297 Epoch 3/10 62/62 [==============================] - 180s 3s/step - loss: 0.6186 - accuracy: 0.6393 - val_loss: 0.6596 - val_accuracy: 0.6385 Epoch 4/10 62/62 [==============================] - 180s 3s/step - loss: 0.5925 - accuracy: 0.7224 - val_loss: 0.5788 - val_accuracy: 0.7010 Epoch 5/10 62/62 [==============================] - 179s 3s/step - loss: 0.6107 - accuracy: 0.7402 - val_loss: 0.5802 - val_accuracy: 0.7365 Epoch 6/10 62/62 [==============================] - 182s 3s/step - loss: 0.5699 - accuracy: 0.7420 - val_loss: 0.6232 - val_accuracy: 0.7145 Epoch 7/10 62/62 [==============================] - 186s 3s/step - loss: 0.5513 - accuracy: 0.7606 - val_loss: 1.9581 - val_accuracy: 0.5287 Epoch 8/10 62/62 [==============================] - 188s 3s/step - loss: 0.6200 - accuracy: 0.7519 - val_loss: 0.5528 - val_accuracy: 0.7517 Epoch 9/10 62/62 [==============================] - 188s 3s/step - loss: 0.5832 - accuracy: 0.7642 - val_loss: 0.6517 - val_accuracy: 0.7635 Epoch 10/10 62/62 [==============================] - 187s 3s/step - loss: 0.5756 - accuracy: 0.7814 - val_loss: 0.5671 - val_accuracy: 0.7736
<keras.callbacks.History at 0x1ccbd5b1490>
The Keras model was successful. Using 10 epochs, took about 30 minutes to run the model to a point where the accuracy was about 78%. That is an increase in 20% accuracy from epoch 1 to epoch 10. I believe the accuracy would continue to increase if I added more epochs. Neural network models are the model I predict will be the most successful when classifying images.
import torch
import torchvision
import matplotlib.pyplot as plt
from time import time
from torchvision import datasets, transforms
from torch import nn, optim
import torch.nn.functional as F #contains useful activation functions
import torchvision.transforms as transforms #for basic image transformations
from torch.utils.data import Dataset, DataLoader #PyTorch's data loading utility
from sklearn.model_selection import train_test_split
labels = data[['subreddit', 'filename']]
labels['subreddit'] = labels.subreddit.replace(to_replace=['AnimalCrossing', 'Doom'], value=[0, 1]) # Converting 'subreddit' column to 0 and 1 instead of 'AnimalCrossing' and 'Doom' in order to train the model using numerical values.
labels.head
<ipython-input-96-e0e38685b54e>:2: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy labels['subreddit'] = labels.subreddit.replace(to_replace=['AnimalCrossing', 'Doom'], value=[0, 1]) # Converting 'subreddit' column to 0 and 1 instead of 'AnimalCrossing' and 'Doom' in order to train the model using numerical values.
<bound method NDFrame.head of subreddit filename 0 0 yjrafuspulu41.png 1 0 2ehmq0fjpj051.jpg 2 0 a2vvzng7g7v41.jpg 3 0 t88z1sn736x41.jpg 4 0 176wf6duetq41.jpg .. ... ... 834 1 psusjw84imo41.jpg 835 1 1vinuy2dhxs31.png 836 1 3jez3vw7q2r41.png 837 1 lpibxuw4kof11.png 838 1 180mf4lt79l31.jpg [1596 rows x 2 columns]>
train_path = 'archive/train'
test_path = 'archive/test'
Using PyTorch to classify images requires the images to be transformed into tensors in order to train the model. Here the images from the dataset are standardized in pixel intensity and dimensions and transformed into tensors.
Code source: https://www.pluralsight.com/guides/image-classification-with-pytorch
fig,ax = plt.subplots(1,5,figsize = (15,3))
for i,idx in enumerate(labels[labels['subreddit'] == 1]['filename'][-5:]):
path = os.path.join(train_path,idx)
ax[i].imshow(mpimg.imread(path))
fig,ax = plt.subplots(1,5,figsize = (15,3))
for i,idx in enumerate(labels[labels['subreddit'] == 0]['filename'][:5]):
path = os.path.join(train_path,idx)
ax[i].imshow(mpimg.imread(path))
def imshow(image, ax=None, title=None, normalize=True):
if ax is None:
fig, ax = plt.subplots()
image = image.numpy().transpose((1, 2, 0))
if normalize:
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
image = std * image + mean
image = np.clip(image, 0, 1)
ax.imshow(image)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.tick_params(axis='both', length=0)
ax.set_xticklabels('')
ax.set_yticklabels('')
return ax
class ACorDoomDataset(Dataset):
def __init__(self, data, path , transform = None):
super().__init__()
self.data = data.values
self.path = path
self.transform = transform
def __len__(self):
return len(self.data)
def __getitem__(self,index):
img_name,label = self.data[index]
img_path = os.path.join(self.path, img_name)
image = img.imread(img_path)
if self.transform is not None:
image = self.transform(image)
return image, label
# Normalizing the images for faster and more stable training.
means = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
train_transform = transforms.Compose([transforms.ToPILImage(),
transforms.ToTensor(),
transforms.Normalize(means,std)])
test_transform = transforms.Compose([transforms.ToPILImage(),
transforms.ToTensor(),
transforms.Normalize(means,std)])
valid_transform = transforms.Compose([transforms.ToPILImage(),
transforms.ToTensor(),
transforms.Normalize(means,std)])
train, valid_data = train_test_split(labels, stratify=labels.subreddit, test_size=0.2)
train_data = ACorDoomDataset(train, train_path, train_transform )
valid_data = ACorDoomDataset(valid_data, train_path, valid_transform )
test_data = ACorDoomDataset(labels, test_path, test_transform )
num_epochs = 10
num_classes = 2
batch_size = 25
learning_rate = 0.001
train_loader = DataLoader(dataset = train_data, batch_size = batch_size, shuffle=True, num_workers=0)
valid_loader = DataLoader(dataset = valid_data, batch_size = batch_size, shuffle=False, num_workers=0)
test_loader = DataLoader(dataset = test_data, batch_size = batch_size, shuffle=False, num_workers=0)
def imshow(image, ax=None, title=None, normalize=True):
if ax is None:
fig, ax = plt.subplots()
image = image.numpy().transpose((1, 2, 0))
if normalize:
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
image = std * image + mean
image = np.clip(image, 0, 1)
ax.imshow(image)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.tick_params(axis='both', length=0)
ax.set_xticklabels('')
ax.set_yticklabels('')
return ax
trainimages, trainlabels = next(iter(train_loader))
fig, axes = plt.subplots(figsize=(12, 12), ncols=5)
print('training images')
for i in range(5):
axe1 = axes[i]
imshow(trainimages[i], ax=axe1, normalize=False)
print(trainimages[0].size())
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-89-2a7d46e70b0a> in <module> ----> 1 trainimages, trainlabels = next(iter(train_loader)) 2 3 fig, axes = plt.subplots(figsize=(12, 12), ncols=5) 4 print('training images') 5 for i in range(5): ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\dataloader.py in __next__(self) 515 if self._sampler_iter is None: 516 self._reset() --> 517 data = self._next_data() 518 self._num_yielded += 1 519 if self._dataset_kind == _DatasetKind.Iterable and \ ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\dataloader.py in _next_data(self) 555 def _next_data(self): 556 index = self._next_index() # may raise StopIteration --> 557 data = self._dataset_fetcher.fetch(index) # may raise StopIteration 558 if self._pin_memory: 559 data = _utils.pin_memory.pin_memory(data) ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\_utils\fetch.py in fetch(self, possibly_batched_index) 42 def fetch(self, possibly_batched_index): 43 if self.auto_collation: ---> 44 data = [self.dataset[idx] for idx in possibly_batched_index] 45 else: 46 data = self.dataset[possibly_batched_index] ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\_utils\fetch.py in <listcomp>(.0) 42 def fetch(self, possibly_batched_index): 43 if self.auto_collation: ---> 44 data = [self.dataset[idx] for idx in possibly_batched_index] 45 else: 46 data = self.dataset[possibly_batched_index] <ipython-input-82-5faa084abe28> in __getitem__(self, index) 11 def __getitem__(self,index): 12 img_name,label = self.data[index] ---> 13 img_path = os.path.join(self.path, img_name) 14 image = img.imread(img_path) 15 if self.transform is not None: ~\AppData\Local\Programs\Python\Python39\lib\ntpath.py in join(path, *paths) 115 return result_drive + result_path 116 except (TypeError, AttributeError, BytesWarning): --> 117 genericpath._check_arg_types('join', path, *paths) 118 raise 119 ~\AppData\Local\Programs\Python\Python39\lib\genericpath.py in _check_arg_types(funcname, *args) 150 hasbytes = True 151 else: --> 152 raise TypeError(f'{funcname}() argument must be str, bytes, or ' 153 f'os.PathLike object, not {s.__class__.__name__!r}') from None 154 if hasstr and hasbytes: TypeError: join() argument must be str, bytes, or os.PathLike object, not 'int'
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3)
self.conv2 = nn.Conv2d(10, 20, kernel_size=3)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(720, 1024)
self.fc2 = nn.Linear(1024, 2)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(x.shape[0],-1)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return x
model = CNN()
print(model)
CNN( (conv1): Conv2d(3, 10, kernel_size=(3, 3), stride=(1, 1)) (conv2): Conv2d(10, 20, kernel_size=(3, 3), stride=(1, 1)) (conv2_drop): Dropout2d(p=0.5, inplace=False) (fc1): Linear(in_features=720, out_features=1024, bias=True) (fc2): Linear(in_features=1024, out_features=2, bias=True) )
model.eval() # it-disables-dropout
with torch.no_grad():
correct = 0
total = 0
for images, labels in valid_loader:
images = images.to(device)
labels = labels.to(device)
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print('Test Accuracy of the model: {} %'.format(100 * correct / total))
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-92-451ac0e80ef3> in <module> 3 correct = 0 4 total = 0 ----> 5 for images, labels in valid_loader: 6 images = images.to(device) 7 labels = labels.to(device) ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\dataloader.py in __next__(self) 515 if self._sampler_iter is None: 516 self._reset() --> 517 data = self._next_data() 518 self._num_yielded += 1 519 if self._dataset_kind == _DatasetKind.Iterable and \ ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\dataloader.py in _next_data(self) 555 def _next_data(self): 556 index = self._next_index() # may raise StopIteration --> 557 data = self._dataset_fetcher.fetch(index) # may raise StopIteration 558 if self._pin_memory: 559 data = _utils.pin_memory.pin_memory(data) ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\_utils\fetch.py in fetch(self, possibly_batched_index) 42 def fetch(self, possibly_batched_index): 43 if self.auto_collation: ---> 44 data = [self.dataset[idx] for idx in possibly_batched_index] 45 else: 46 data = self.dataset[possibly_batched_index] ~\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\utils\data\_utils\fetch.py in <listcomp>(.0) 42 def fetch(self, possibly_batched_index): 43 if self.auto_collation: ---> 44 data = [self.dataset[idx] for idx in possibly_batched_index] 45 else: 46 data = self.dataset[possibly_batched_index] <ipython-input-82-5faa084abe28> in __getitem__(self, index) 11 def __getitem__(self,index): 12 img_name,label = self.data[index] ---> 13 img_path = os.path.join(self.path, img_name) 14 image = img.imread(img_path) 15 if self.transform is not None: ~\AppData\Local\Programs\Python\Python39\lib\ntpath.py in join(path, *paths) 115 return result_drive + result_path 116 except (TypeError, AttributeError, BytesWarning): --> 117 genericpath._check_arg_types('join', path, *paths) 118 raise 119 ~\AppData\Local\Programs\Python\Python39\lib\genericpath.py in _check_arg_types(funcname, *args) 150 hasbytes = True 151 else: --> 152 raise TypeError(f'{funcname}() argument must be str, bytes, or ' 153 f'os.PathLike object, not {s.__class__.__name__!r}') from None 154 if hasstr and hasbytes: TypeError: join() argument must be str, bytes, or os.PathLike object, not 'int'
My Pytorch model was not successful. I was interested to see how it compared to the other neural network model, Keras, however it was much harder to implement. I found a solution online (cited above), that helped me attempt to use a Pytorch model, however my attempts were unsuccessful. In theory, Pytorch should outperform the Keras model in either accuracy or speed.
Once again, I split the given dataset into training and testing datasets using the same method as before resulting in datasets as follows:
train
ac- 459 images
doom- 541 images
test
ac- 298 images
doom- 299 images
source: https://youtu.be/2miw-69Xb0g
import glob
from keras.applications.vgg16 import VGG16
size = 256
#Initialize lists to capture training data/labels
train_images = []
train_labels = []
for directory_path in glob.glob("archive/train/*"):
label = directory_path.split("\\")[-1]
print(label)
for img_path in glob.glob(os.path.join(directory_path, "*.jpg")):
print(img_path)
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.resize(img, (size, size)) #using open cv2 to resize images
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) #and change the color from BGR to RGB
train_images.append(img)
train_labels.append(label)
ing\tezpldyxa1x41.jpg archive/train\animal_crossing\thm0z4ykvss41.jpg archive/train\animal_crossing\thqiug0b5a051.jpg archive/train\animal_crossing\tiw9kuhlwlx41.jpg archive/train\animal_crossing\tlkrdcjx5tp41.jpg archive/train\animal_crossing\tmjnrzx5ncx41.jpg archive/train\animal_crossing\TnKxDqh.jpg archive/train\animal_crossing\tQxPq0Q.jpg archive/train\animal_crossing\tvodupn3e0s41.jpg archive/train\animal_crossing\u1caidls78v41.jpg archive/train\animal_crossing\u3azew2uyxy41.jpg archive/train\animal_crossing\ubyghe0ue7t41.jpg archive/train\animal_crossing\ufmdogx78lx41.jpg archive/train\animal_crossing\uhjr138rb2p41.jpg archive/train\animal_crossing\ujg0iwdhdyw41.jpg archive/train\animal_crossing\ULAJ543.jpg archive/train\animal_crossing\uowc5th2kht41.jpg archive/train\animal_crossing\uqlg2mzz7lt41.jpg archive/train\animal_crossing\uqnqeu1rfxo41.jpg archive/train\animal_crossing\ut4dpd5d51x41.jpg archive/train\animal_crossing\ux7q18g45lx41.jpg archive/train\animal_crossing\uxern5lf8cx41.jpg archive/train\animal_crossing\v0z45yjepfy41.jpg archive/train\animal_crossing\v3oilezlgjr41.jpg archive/train\animal_crossing\v5iq9fi5pyv41.jpg archive/train\animal_crossing\v8lonwbzcj151.jpg archive/train\animal_crossing\v97ek1e8tmu41.jpg archive/train\animal_crossing\vhuszhh534r41.jpg archive/train\animal_crossing\viycp60oles41.jpg archive/train\animal_crossing\vm57fdiht1r41.jpg archive/train\animal_crossing\vn8d1bc45vr41.jpg archive/train\animal_crossing\vnlr1p7no9m41.jpg archive/train\animal_crossing\vq2rft8te9t41.jpg archive/train\animal_crossing\vsfzniy786z41.jpg archive/train\animal_crossing\vt3tzr0v62t41.jpg archive/train\animal_crossing\w0ddyr9atvu41.jpg archive/train\animal_crossing\W1dh6EI.jpg archive/train\animal_crossing\w3lwd81kfsz41.jpg archive/train\animal_crossing\w4c4e7ocrtt41.jpg archive/train\animal_crossing\w4pgzhc6ic531.jpg archive/train\animal_crossing\w7bhc0gnsrp41.jpg archive/train\animal_crossing\we19mz2aybq41.jpg archive/train\animal_crossing\weipksgb6lx41.jpg archive/train\animal_crossing\wgboytbaqdt41.jpg archive/train\animal_crossing\wgok1c8j7ex41.jpg archive/train\animal_crossing\wgwa7ynh4au41.jpg archive/train\animal_crossing\wif4ktur1t251.jpg archive/train\animal_crossing\wiyl0tl0n8r41.jpg archive/train\animal_crossing\wje27d5vqby41.jpg archive/train\animal_crossing\WkC577D.jpg archive/train\animal_crossing\wksvtldspcw41.jpg archive/train\animal_crossing\wopcfk74tzo41.jpg archive/train\animal_crossing\wQI3VnL.jpg archive/train\animal_crossing\wssx8Z9.jpg archive/train\animal_crossing\wzbl8k6i1by41.jpg archive/train\animal_crossing\wzu6d3xvkqx41.jpg archive/train\animal_crossing\x5pw0wvvmtv41.jpg archive/train\animal_crossing\x4972xloe5151.jpg archive/train\animal_crossing\xhabzy56jmy41.jpg archive/train\animal_crossing\xhd2baiwj5z41.jpg archive/train\animal_crossing\xnq12gew87u41.jpg archive/train\animal_crossing\xq4bpw3jldu41.jpg archive/train\animal_crossing\y3iezv2e6yw41.jpg archive/train\animal_crossing\y4px7ci1lev41.jpg archive/train\animal_crossing\y5ijsyipij251.jpg archive/train\animal_crossing\y9gqmuqe7q151.jpg archive/train\animal_crossing\Y71KUFN.jpg archive/train\animal_crossing\ybn25fuvylv41.jpg archive/train\animal_crossing\ydcl9x6j78w41.jpg archive/train\animal_crossing\ydwaywmacyy41.jpg archive/train\animal_crossing\ye94d0hzodt41.jpg archive/train\animal_crossing\yf7zsf12ymt41.jpg archive/train\animal_crossing\ygdv36iprtu41.jpg archive/train\animal_crossing\yh5k1gsg81u41.jpg archive/train\animal_crossing\yin86bvqqwt41.jpg archive/train\animal_crossing\yl0dbtm8p5u41.jpg archive/train\animal_crossing\yn8B54E.jpg archive/train\animal_crossing\ynaooejxfkv41.jpg archive/train\animal_crossing\ynkgq8cqv9251.jpg archive/train\animal_crossing\yoaeh14klxr41.jpg archive/train\animal_crossing\yqlb2sk00jp41.jpg archive/train\animal_crossing\yqmxamjjc5v41.jpg archive/train\animal_crossing\yunthb67leq41.jpg archive/train\animal_crossing\yusms7axbto41.jpg archive/train\animal_crossing\ywv1q7miwsy41.jpg archive/train\animal_crossing\yx4q0749anr41.jpg archive/train\animal_crossing\yxvzr1tmaev41.jpg archive/train\animal_crossing\yzn7hyoklqz41.jpg archive/train\animal_crossing\z3g83605u6151.jpg archive/train\animal_crossing\z3unrxrohzt41.jpg archive/train\animal_crossing\z6231rng87t41.jpg archive/train\animal_crossing\zbikvdr8olz41.jpg archive/train\animal_crossing\zc9dcty1n7x41.jpg archive/train\animal_crossing\zduzhjxgdar41.jpg archive/train\animal_crossing\zergm3hguss41.jpg archive/train\animal_crossing\zgxnww40fa051.jpg archive/train\animal_crossing\zje33cdc24z41.jpg archive/train\animal_crossing\Zjo5hx3.jpg archive/train\animal_crossing\zlpum6ai3il41.jpg archive/train\animal_crossing\zly635xzss331.jpg archive/train\animal_crossing\znpd098mrg251.jpg archive/train\animal_crossing\zqr2lu7ytlz41.jpg archive/train\animal_crossing\ztur5io750z41.jpg archive/train\animal_crossing\zu84yanzx5r41.jpg archive/train\animal_crossing\zuwsu9c11p251.jpg archive/train\animal_crossing\zvmbbtst3ty41.jpg archive/train\animal_crossing\zxh8tht0icu41.jpg archive/train\animal_crossing\zymakr80i8q41.jpg archive/train\animal_crossing\zzgx4krvjup41.jpg doom archive/train\doom\co4m0ecwcmu41.jpg archive/train\doom\cr65z9yucvx11.jpg archive/train\doom\cxowqxjvkzq41.jpg archive/train\doom\d2gryclsf3731.jpg archive/train\doom\d5gjva6g1s241.jpg archive/train\doom\dbkt6ll0g6e41.jpg archive/train\doom\ddvaaec5vao41.jpg archive/train\doom\df7ufpug69o41.jpg archive/train\doom\dgovey0djwg41.jpg archive/train\doom\dhpg27qzffj41.jpg archive/train\doom\dkbdimdugen41.jpg archive/train\doom\dlj722lgx4251.jpg archive/train\doom\dnmde0doj7p41.jpg archive/train\doom\doiyfmmaspr41.jpg archive/train\doom\dxa8086pwdb41.jpg archive/train\doom\dY6cG3U.jpg archive/train\doom\dydvn9lpsil41.jpg archive/train\doom\dz1xwxlnfrp41.jpg archive/train\doom\e0skxeer0mp41.jpg archive/train\doom\e1a2dkzwh5w41.jpg archive/train\doom\e7ff8trftcz41.jpg archive/train\doom\e81m057ip5v41.jpg archive/train\doom\eb75f1te78g41.jpg archive/train\doom\ebvwi100l8u41.jpg archive/train\doom\edmofog674m41.jpg archive/train\doom\efdvm10gqoo41.jpg archive/train\doom\eflb13v1llr41.jpg archive/train\doom\eg3mu7r232q41.jpg archive/train\doom\ehh0c9wo3lk31.jpg archive/train\doom\EHkNSbj.jpg archive/train\doom\ehmxr5o8aqt41.jpg archive/train\doom\eifwd7ncfkf41.jpg archive/train\doom\ej2ew008cx051.jpg archive/train\doom\ekmkzznqogo41.jpg archive/train\doom\etqyw0pbk1u41.jpg archive/train\doom\eubprx3fayn41.jpg archive/train\doom\ewpuxr44dix31.jpg archive/train\doom\ewxjyfgkqy931.jpg archive/train\doom\exl00z7lnrf41.jpg archive/train\doom\exrlujsih0q41.jpg archive/train\doom\ezfhxms42ar41.jpg archive/train\doom\f1ausyas8bv41.jpg archive/train\doom\f4ovxvk1n1j21.jpg archive/train\doom\f5vux5s1wko41.jpg archive/train\doom\f9zqbdn6m2y41.jpg archive/train\doom\f17bqkjio0a41.jpg archive/train\doom\fdhgzoo5oa251.jpg archive/train\doom\fdqsbwz658z41.jpg archive/train\doom\fezolyxfxuo31.jpg archive/train\doom\fhj6w9wq35j41.jpg archive/train\doom\fhx6xx20fao41.jpg archive/train\doom\fil3dbmntl841.jpg archive/train\doom\fki3ayyvha831.jpg archive/train\doom\fp5x77atmri31.jpg archive/train\doom\fr8cb5pux5531.jpg archive/train\doom\frovn5ohsv931.jpg archive/train\doom\fsgfpkqclcj31.jpg archive/train\doom\fslf7r29i0f31.jpg archive/train\doom\ftayvcwnxap41.jpg archive/train\doom\ftq1dtlrwfo11.jpg archive/train\doom\fw1xeqqqnzl31.jpg archive/train\doom\fypx2trhrqm41.jpg archive/train\doom\g0ffa5l44zx41.jpg archive/train\doom\g4yivjo27ea41.jpg archive/train\doom\g20sjv0ljah31.jpg archive/train\doom\g26xfqqcein41.jpg archive/train\doom\gdgbv9zwilt41.jpg archive/train\doom\geb8pvcg3i841.jpg archive/train\doom\gguzfwm0ws341.jpg archive/train\doom\gi5w0jexd1o41.jpg archive/train\doom\gkeqq9ry0bo41.jpg archive/train\doom\gnsj5xqj9ep41.jpg archive/train\doom\gpmq2vu9s7q41.jpg archive/train\doom\gscu57ei43141.jpg archive/train\doom\gvdd0wig8wu41.jpg archive/train\doom\gyb7sjvaqah41.jpg archive/train\doom\h3g92dztaip41.jpg archive/train\doom\h3h1ydn4uk151.jpg archive/train\doom\h3u4edz561n41.jpg archive/train\doom\h4xq6ip3dbp41.jpg archive/train\doom\h5lvupes42241.jpg archive/train\doom\h8kh9zjsmok21.jpg archive/train\doom\h8vgtz638lr41.jpg archive/train\doom\h9nkiyuo89y41.jpg archive/train\doom\h69k6nvcrqa41.jpg archive/train\doom\ha6664k810941.jpg archive/train\doom\hcpe9eo9l8331.jpg archive/train\doom\hdqewawan9p41.jpg archive/train\doom\hh2mh0zahdv41.jpg archive/train\doom\hltdmjdplh531.jpg archive/train\doom\holf2wkvblv41.jpg archive/train\doom\hs7q6xzn29131.jpg archive/train\doom\hskukn5r62b41.jpg archive/train\doom\hsnvsywinoo41.jpg archive/train\doom\htkxum92zb051.jpg archive/train\doom\hueyivqmies41.jpg archive/train\doom\hybrf68w2v631.jpg archive/train\doom\i6cofa2.jpg archive/train\doom\i8m7jw1p49x31.jpg archive/train\doom\idug4d2170831.jpg archive/train\doom\iifsgokr78o41.jpg archive/train\doom\ik4d2mpi1fo41.jpg archive/train\doom\ikix5vc.jpg archive/train\doom\iMniTZ0.jpg archive/train\doom\insrlmeyxv051.jpg archive/train\doom\iquulqh5gkz41.jpg archive/train\doom\ittwha79pto21.jpg archive/train\doom\iv3wjg68qkt41.jpg archive/train\doom\iwyhjdg6jv841.jpg archive/train\doom\ixyxz784e3r41.jpg archive/train\doom\izbtuqy7ybl41.jpg archive/train\doom\j01d2yhvblm11.jpg archive/train\doom\j1wb97oya5g41.jpg archive/train\doom\j6imyz9j4s251.jpg archive/train\doom\j9fq1uxz9ap41.jpg archive/train\doom\jdeosa4mzje41.jpg archive/train\doom\jeEyt0q.jpg archive/train\doom\jg51bfd4nmx41.jpg archive/train\doom\jk1lza5gw3h41.jpg archive/train\doom\jrk0eogay8s41.jpg archive/train\doom\jrXwn5X.jpg archive/train\doom\jt5ztcv7e2t41.jpg archive/train\doom\jwck8uf9uto41.jpg archive/train\doom\jybtzgg0jqr41.jpg archive/train\doom\k23ksr31qar41.jpg archive/train\doom\k50qaldi23251.jpg archive/train\doom\kalnr6lu6gy31.jpg archive/train\doom\kb847ien3wj41.jpg archive/train\doom\kbi0wq1wl9o41.jpg archive/train\doom\kcczvtzp2h931.jpg archive/train\doom\KCk4N0n.jpg archive/train\doom\kg2hhuel2vx31.jpg archive/train\doom\kgo5y4wx7rp41.jpg archive/train\doom\kho8qirfizy41.jpg archive/train\doom\ki1vqelx7ld41.jpg archive/train\doom\kickcy7tt7t41.jpg archive/train\doom\kixshih85vi41.jpg archive/train\doom\kkfnjrzuxa141.jpg archive/train\doom\klis8kyv1ql31.jpg archive/train\doom\ko8kf69302o41.jpg archive/train\doom\koe437qc97v41.jpg archive/train\doom\KpQRTFG.jpg archive/train\doom\ksn72cinsy151.jpg archive/train\doom\l20q5d8anh341.jpg archive/train\doom\l875SoO.jpg archive/train\doom\ld3g8a494ip41.jpg archive/train\doom\ldezto128im41.jpg archive/train\doom\lhjv3ah1pp431.jpg archive/train\doom\ll6pb26j76l41.jpg archive/train\doom\lnsgs5chv9m41.jpg archive/train\doom\lnwys7n481u41.jpg archive/train\doom\lohb806075051.jpg archive/train\doom\lp1ljkhlyfm41.jpg archive/train\doom\lq9wvun2d2t41.jpg archive/train\doom\lqqeknkcrbn31.jpg archive/train\doom\lqu50c4mqvz31.jpg archive/train\doom\lrsenmu9q5l41.jpg archive/train\doom\lsdyqogmu7v41.jpg archive/train\doom\lsje6vjnrtn41.jpg archive/train\doom\lu3lsgc5rcr41.jpg archive/train\doom\lv7wi59wjgs41.jpg archive/train\doom\lwfoum0k89o41.jpg archive/train\doom\lyvkf5p6ymz41.jpg archive/train\doom\lzk0s9mx4po41.jpg archive/train\doom\lzre9qnqo2q41.jpg archive/train\doom\m4xfwt0hfao41.jpg archive/train\doom\m6mgipw3qso41.jpg archive/train\doom\m8205xouhmp41.jpg archive/train\doom\mabem4t1ppp41.jpg archive/train\doom\mbgapc4q9js41.jpg archive/train\doom\mcgys8844ku41.jpg archive/train\doom\mJaAUEA.jpg archive/train\doom\mjl3ryv0ejh41.jpg archive/train\doom\mKiEx0Y.jpg archive/train\doom\mlt3z6vdf1i31.jpg archive/train\doom\mlwgn153nw241.jpg archive/train\doom\mmumnccxumt41.jpg archive/train\doom\mqpbe6wpuiq41.jpg archive/train\doom\mqqd494cdst41.jpg archive/train\doom\msarkaic83r41.jpg archive/train\doom\mSINVLA.jpg archive/train\doom\myzv7nbnswr41.jpg archive/train\doom\mz2duvh5xwr41.jpg archive/train\doom\n3g5vzaeb1z41.jpg archive/train\doom\n5bcwpo211o41.jpg archive/train\doom\n5rum91r23p41.jpg archive/train\doom\n9ji4n9qdzu41.jpg archive/train\doom\n314phlf09r41.jpg archive/train\doom\nc5mqymkx4331.jpg archive/train\doom\nddr4q3fzju41.jpg archive/train\doom\ndmv0fhpzup41.jpg archive/train\doom\nee3x3ro0d251.jpg archive/train\doom\nkbaiv68n3l41.jpg archive/train\doom\nmjw64vb0kg41.jpg archive/train\doom\nqawxp7e0vr41.jpg archive/train\doom\nrjbcscyr5o41.jpg archive/train\doom\nrx53le81co41.jpg archive/train\doom\ns5js6nvjxw41.jpg archive/train\doom\numuacocm9931.jpg archive/train\doom\o1drvcdxz6251.jpg archive/train\doom\o3segyhhlmu41.jpg archive/train\doom\o4q597v604251.jpg archive/train\doom\o6eijlmh9c151.jpg archive/train\doom\o44k0a0j7sl21.jpg archive/train\doom\o93jc5r2e0o41.jpg archive/train\doom\od7497obk3831.jpg archive/train\doom\odxmzklsff741.jpg archive/train\doom\of5t94mga4i21.jpg archive/train\doom\off0e2elr0p41.jpg archive/train\doom\ogqovinzbew41.jpg archive/train\doom\ohjf4jogmku41.jpg archive/train\doom\okp3cpdobup41.jpg archive/train\doom\ooqoabybtcp41.jpg archive/train\doom\opep4iricr041.jpg archive/train\doom\oqbjvgqrh0f41.jpg archive/train\doom\originals.jpg archive/train\doom\ots2pux9s7q41.jpg archive/train\doom\ovl4sms2ohs41.jpg archive/train\doom\ow31wntcsnv41.jpg archive/train\doom\ozvk8gx9vi251.jpg archive/train\doom\p0trjvlit1o41.jpg archive/train\doom\p1ao5jhay7p41.jpg archive/train\doom\p3v4vezbstp41.jpg archive/train\doom\p8k09f6wb0p41.jpg archive/train\doom\p8ul4rlfrer41.jpg archive/train\doom\p28lxf95oou41.jpg archive/train\doom\pa9t7wdwvbk41.jpg archive/train\doom\PaLUI2r.jpg archive/train\doom\pcz0313c6ey41.jpg archive/train\doom\pe0fj1yx0ka31.jpg archive/train\doom\ped01zzlpyk41.jpg archive/train\doom\pkxy65e7qp341.jpg archive/train\doom\pp338396rcz41.jpg archive/train\doom\psu073yh6yo41.jpg archive/train\doom\psusjw84imo41.jpg archive/train\doom\pswlw2qn3uh41.jpg archive/train\doom\Pxi4PNX.jpg archive/train\doom\pyj6r0wh8h541.jpg archive/train\doom\pzyy7d7gedr41.jpg archive/train\doom\q5xdvd465el41.jpg archive/train\doom\q7z24nrzjbr41.jpg archive/train\doom\q41zhv0e65251.jpg archive/train\doom\qb2t52fsfto41.jpg archive/train\doom\qbv3zoeu70w41.jpg archive/train\doom\qdyak4x4i1251.jpg archive/train\doom\qgfyc929tzn41.jpg archive/train\doom\qhmyq1ebs4q41.jpg archive/train\doom\qied8a3vsyx41.jpg archive/train\doom\qisy4hvhk0q41.jpg archive/train\doom\qkwwa5l2hn641.jpg archive/train\doom\qnp7ovpk0jr31.jpg archive/train\doom\qqesi4gwmb421.jpg archive/train\doom\qqjgr307kdr41.jpg archive/train\doom\qtibz6r41bw41.jpg archive/train\doom\qtsfn5e4r9o41.jpg archive/train\doom\qvu9h185rur41.jpg archive/train\doom\qz9ccl2xios41.jpg archive/train\doom\r1spcvcr2st41.jpg archive/train\doom\rbqi7hs14oi41.jpg archive/train\doom\rdmlbdd49zi31.jpg archive/train\doom\rf60zmljrrt41.jpg archive/train\doom\rfsrix1e8cj41.jpg archive/train\doom\rhj6apbza3p41.jpg archive/train\doom\ri9hjen2rz051.jpg archive/train\doom\rjlef08ax8d41.jpg archive/train\doom\rlzpfd6jawo41.jpg archive/train\doom\rnzbczz6e9c41.jpg archive/train\doom\rogkbl9rf5251.jpg archive/train\doom\rqrmlcbrhsk31.jpg archive/train\doom\rrb5qqmdubo41.jpg archive/train\doom\rs6u382hge051.jpg archive/train\doom\ru9hyxhnqsj41.jpg archive/train\doom\rwta87r0whl41.jpg archive/train\doom\ryu8z32brbo41.jpg archive/train\doom\s.jpg archive/train\doom\s2cqf8vm9wz41.jpg archive/train\doom\s3iwl9xgczx41.jpg archive/train\doom\s40ixoblh2v41.jpg archive/train\doom\s89ngxqzi5z41.jpg archive/train\doom\s418e27xxal41.jpg archive/train\doom\sBqdSc8.jpg archive/train\doom\sfxshuqru7h41.jpg archive/train\doom\sgixjruqciu21.jpg archive/train\doom\sgqnqbh63af41.jpg archive/train\doom\shm402hnl4v41.jpg archive/train\doom\silr95mgbdz41.jpg archive/train\doom\smpxs38j4h251.jpg archive/train\doom\soec2x0t63051.jpg archive/train\doom\svztqowhxbo41.jpg archive/train\doom\szvvykvfpbs31.jpg archive/train\doom\t2zcvuuq2mu31.jpg archive/train\doom\t3t8eew13wv41.jpg archive/train\doom\tacx0dpvnha41.jpg archive/train\doom\tavf2blom1q41.jpg archive/train\doom\tjoxjvskafp41.jpg archive/train\doom\tl5mquu4l9j41.jpg archive/train\doom\to9ntvumgqu41.jpg archive/train\doom\tp4u33n34yj41.jpg archive/train\doom\tqm7tsagrdz41.jpg archive/train\doom\tuxjtl2vr8n41.jpg archive/train\doom\u0k0i1oj7tr41.jpg archive/train\doom\u1a3p6o3d9o41.jpg archive/train\doom\u5w25uefinp21.jpg archive/train\doom\u25lzwunmdz21.jpg archive/train\doom\u41d2sjgit641.jpg archive/train\doom\uaftik944w941.jpg archive/train\doom\ubvgezdua7u41.jpg archive/train\doom\udm1rk7zhhg31.jpg archive/train\doom\uf7dxqa622o41.jpg archive/train\doom\ufizc3vq9pw31.jpg archive/train\doom\ugs79t7znwe41.jpg archive/train\doom\ugzimfspx2p41.jpg archive/train\doom\uj7vci21e7p41.jpg archive/train\doom\Ulj3uL9.jpg archive/train\doom\um5igr4s9zo41.jpg archive/train\doom\unqa1b2rl5y21.jpg archive/train\doom\UQIXCFH.jpg archive/train\doom\uqjae0yhh0q41.jpg archive/train\doom\uz91apmzpkj41.jpg archive/train\doom\uzpuxz4d99p41.jpg archive/train\doom\v7amxql6t3g11.jpg archive/train\doom\v9y9qpd8qvs41.jpg archive/train\doom\v57o8itwodu41.jpg archive/train\doom\v569zvaf07v41.jpg archive/train\doom\v688k3qkqbr41.jpg archive/train\doom\vdihreplg1r41.jpg archive/train\doom\veS4M8Y.jpg archive/train\doom\vhupbtb1cl941.jpg archive/train\doom\vi0g4y1mqdw41.jpg archive/train\doom\vregcwzgwbz41.jpg archive/train\doom\vs69cz8yjmq21.jpg archive/train\doom\vsb14z3r7rv41.jpg archive/train\doom\vskie1n4gvn41.jpg archive/train\doom\w0ol3080hn441.jpg archive/train\doom\w1vox5zensw41.jpg archive/train\doom\w2awzpenk7w41.jpg archive/train\doom\w5dtr3im00331.jpg archive/train\doom\w6aj60c8f0d41.jpg archive/train\doom\w7mvqot5kq231.jpg archive/train\doom\w8q5y4u2cdd41.jpg archive/train\doom\w8wnko9hu3r41.jpg archive/train\doom\w97n50dhnpz41.jpg archive/train\doom\wbomjywzfoy31.jpg archive/train\doom\wbtr194ex3931.jpg archive/train\doom\wczt0ehgopq41.jpg archive/train\doom\wflxqgz693h31.jpg archive/train\doom\wggphbkotup41.jpg archive/train\doom\whhx912sz0p41.jpg archive/train\doom\whlvc5rxlgr41.jpg archive/train\doom\witbnf67ghs41.jpg archive/train\doom\wk3aqt5yhes41.jpg archive/train\doom\wk5mpgf8t9u41.jpg archive/train\doom\wkf1pd2idgi41.jpg archive/train\doom\wkg6sfiiuu151.jpg archive/train\doom\wl44g2wlxfr41.jpg archive/train\doom\wmu2ywi24qo41.jpg archive/train\doom\wsc5opg8bll31.jpg archive/train\doom\wuw4g2c9xbt41.jpg archive/train\doom\wxt7hv0pkjf31.jpg archive/train\doom\wys1i5ksyeo41.jpg archive/train\doom\x8fp82eap3251.jpg archive/train\doom\X9WDK1v.jpg archive/train\doom\xf43sru5faw41.jpg archive/train\doom\xfbqu878xpt41.jpg archive/train\doom\xg05ujnyv2q41.jpg archive/train\doom\xhnxiqkcq0i41.jpg archive/train\doom\xiao5cscb4y11.jpg archive/train\doom\xiy2r5a551q41.jpg archive/train\doom\xj7foa15qi051.jpg archive/train\doom\xpl2xw612jp41.jpg archive/train\doom\xrsnoj7w2bg41.jpg archive/train\doom\xzo0ohohw3k21.jpg archive/train\doom\y2aohqgeggp21.jpg archive/train\doom\y5pddy7h16x41.jpg archive/train\doom\y5salhq8wat21.jpg archive/train\doom\y583nja0mmh41.jpg archive/train\doom\ya9ltc4hw6s41.jpg archive/train\doom\yb7qrsmshap41.jpg archive/train\doom\ymfw0xg1k2k41.jpg archive/train\doom\yn6cjb195gs41.jpg archive/train\doom\ysb5015rkio41.jpg archive/train\doom\ytkmqt7easd41.jpg archive/train\doom\yvqwrjmiucm31.jpg archive/train\doom\ywagbnqdapd41.jpg archive/train\doom\ywwl2cxebqo41.jpg archive/train\doom\yyd4y5v6xmo41.jpg archive/train\doom\z02shvyzxgo41.jpg archive/train\doom\z2foac1wlqs41.jpg archive/train\doom\z5vhgxdvyg641.jpg archive/train\doom\z976g4uivsm41.jpg archive/train\doom\zc4oh3swdof41.jpg archive/train\doom\zc7wdrmplrn41.jpg archive/train\doom\zf9vh4q8r2431.jpg archive/train\doom\zfou45lxfop41.jpg archive/train\doom\zgvl9dnuc4o41.jpg archive/train\doom\zhmkpsl13hx41.jpg archive/train\doom\zj71r5aymh031.jpg archive/train\doom\zomuo178p6p41.jpg archive/train\doom\zq983ilrwza41.jpg archive/train\doom\zqinjaqssci41.jpg archive/train\doom\zrh0uz2v40m41.jpg archive/train\doom\zt2fzod1ylt41.jpg archive/train\doom\zuxfcgztdk251.jpg archive/train\doom\zvfo5ohcuto41.jpg archive/train\doom\zybq4gjsv2x41.jpg
#convert lists to arrays (easier to work with)
train_images = np.array(train_images)
train_labels = np.array(train_labels)
#repeating the steps above, this time for the training data
#Initialize lists to capture testing data/labels
test_images = []
test_labels = []
for directory_path in glob.glob("archive/test/*"):
label = directory_path.split("\\")[-1]
print(label)
for img_path in glob.glob(os.path.join(directory_path, "*.jpg")):
print(img_path)
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.resize(img, (size, size)) #using open cv2 to resize images
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) #and change the color from BGR to RGB
test_images.append(img)
test_labels.append(label)
r41.jpg archive/test\animal_crossing\0mzs9f0wb8z41.jpg archive/test\animal_crossing\0ozodkocirw41.jpg archive/test\animal_crossing\0wovk4f2v0h41.jpg archive/test\animal_crossing\0yotitpwxht41.jpg archive/test\animal_crossing\1be6ge0vqrx41.jpg archive/test\animal_crossing\1hvci9xecgm41.jpg archive/test\animal_crossing\1if48k12e1q41.jpg archive/test\animal_crossing\1iydjh1w9xz41.jpg archive/test\animal_crossing\1jsic9i2wmu41.jpg archive/test\animal_crossing\1kool8vkq0r41.jpg archive/test\animal_crossing\1m4kgui15us41.jpg archive/test\animal_crossing\1mau9ybffiq41.jpg archive/test\animal_crossing\1nj60xs06y151.jpg archive/test\animal_crossing\1ppdvul5ll051.jpg archive/test\animal_crossing\1qcffna4czr41.jpg archive/test\animal_crossing\1vy8abm.jpg archive/test\animal_crossing\2c0drcqw07151.jpg archive/test\animal_crossing\2eet6z805a251.jpg archive/test\animal_crossing\2ehmq0fjpj051.jpg archive/test\animal_crossing\2g1c09whuqq41.jpg archive/test\animal_crossing\2ir6nzse8tt41.jpg archive/test\animal_crossing\2jjk7qjqrok41.jpg archive/test\animal_crossing\2mfsv2okrlw41.jpg archive/test\animal_crossing\2v9ke0u7u3251.jpg archive/test\animal_crossing\2z1iwjt5f4o41.jpg archive/test\animal_crossing\3ffya37h56v41.jpg archive/test\animal_crossing\3ioh6div1gx41.jpg archive/test\animal_crossing\3knczrzj74s41.jpg archive/test\animal_crossing\3lv88stn0xy41.jpg archive/test\animal_crossing\3nrt721qhcu41.jpg archive/test\animal_crossing\3q66zq2et8v41.jpg archive/test\animal_crossing\3qn87hrl2s051.jpg archive/test\animal_crossing\3tp6k4rcpxw41.jpg archive/test\animal_crossing\3u4cqdipdjx41.jpg archive/test\animal_crossing\3u5v8o3hbus41.jpg archive/test\animal_crossing\3wkpNSV.jpg archive/test\animal_crossing\3xfc3u4woq051.jpg archive/test\animal_crossing\4ch49n7ggo251.jpg archive/test\animal_crossing\4d1njzkqe6w41.jpg archive/test\animal_crossing\4gocp91yv4y41.jpg archive/test\animal_crossing\4jl524vvhpo41.jpg archive/test\animal_crossing\4lhszcvq0i251.jpg archive/test\animal_crossing\4m4bnqg4ofs41.jpg archive/test\animal_crossing\4rccqx85b3w31.jpg archive/test\animal_crossing\4s7pypxlsd051.jpg archive/test\animal_crossing\4w9dwthe38051.jpg archive/test\animal_crossing\4wexc24oxs051.jpg archive/test\animal_crossing\4z78v30g4dy41.jpg archive/test\animal_crossing\5d739cp70pp41.jpg archive/test\animal_crossing\5fqz3vkvw8q41.jpg archive/test\animal_crossing\5i0u3dtau4a31.jpg archive/test\animal_crossing\5ibkz90rpdp21.jpg archive/test\animal_crossing\5izbphlfqey41.jpg archive/test\animal_crossing\5lhnu5wkaws41.jpg archive/test\animal_crossing\5m3ii7q9x9p41.jpg archive/test\animal_crossing\5mal6lvkrmx41.jpg archive/test\animal_crossing\5n2rzgxc14151.jpg archive/test\animal_crossing\5nf65gq24gw41.jpg archive/test\animal_crossing\5qwujo8q42w41.jpg archive/test\animal_crossing\5r07rfqoaor21.jpg archive/test\animal_crossing\5t0572mhcnt41.jpg archive/test\animal_crossing\5yu10oi529u41.jpg archive/test\animal_crossing\06wprmd2m7u41.jpg archive/test\animal_crossing\6bkg3ot4xi151.jpg archive/test\animal_crossing\6ehb04xvber41.jpg archive/test\animal_crossing\6elwirqlh7v41.jpg archive/test\animal_crossing\6gkc4urrm2l41.jpg archive/test\animal_crossing\6i7942mo4ow41.jpg archive/test\animal_crossing\6iqzslgyvzt41.jpg archive/test\animal_crossing\6laytxuzxvq41.jpg archive/test\animal_crossing\6obmy1162po41.jpg archive/test\animal_crossing\6r8i57hmzk151.jpg archive/test\animal_crossing\6rkbh008q8p41.jpg archive/test\animal_crossing\6snk59y7os251.jpg archive/test\animal_crossing\6ugubymg6fv41.jpg archive/test\animal_crossing\6w8x05b93xs41.jpg archive/test\animal_crossing\6wh1dwko5ov41.jpg archive/test\animal_crossing\6zgeznjf9jo41.jpg archive/test\animal_crossing\07nqetuqw9w41.jpg archive/test\animal_crossing\07xjd27c8uy41.jpg archive/test\animal_crossing\7ajg3ewgi4z41.jpg archive/test\animal_crossing\7byvq15say051.jpg archive/test\animal_crossing\7iy5dj4aqb251.jpg archive/test\animal_crossing\7lzcc2z1r2x41.jpg archive/test\animal_crossing\7o0coqjaqfo41.jpg archive/test\animal_crossing\7ol380jp21u41.jpg archive/test\animal_crossing\7roy7fr5giy41.jpg archive/test\animal_crossing\7u38870a0jv41.jpg archive/test\animal_crossing\7uwebefw0fp41.jpg archive/test\animal_crossing\7v8k0iybpsw41.jpg archive/test\animal_crossing\7xcbunxbv2u41.jpg archive/test\animal_crossing\7yc49g2qdsz41.jpg archive/test\animal_crossing\8aGPHwF.jpg archive/test\animal_crossing\8cekv2yjjv251.jpg archive/test\animal_crossing\8cpsi2u6tps41.jpg archive/test\animal_crossing\8cyvvz7asbo41.jpg archive/test\animal_crossing\8d04ur941iq41.jpg archive/test\animal_crossing\8f81b6uhcow41.jpg archive/test\animal_crossing\8fu1s5n87fs41.jpg archive/test\animal_crossing\8jdhlhbbuap41.jpg archive/test\animal_crossing\8lgc3zd9b9151.jpg archive/test\animal_crossing\8luej2xnj8o41.jpg archive/test\animal_crossing\8m741cmscov41.jpg archive/test\animal_crossing\8MCVboY.jpg archive/test\animal_crossing\8nv4qoa6fpy41.jpg archive/test\animal_crossing\8oi70e2qa4z41.jpg archive/test\animal_crossing\8sbsurwh7ou41.jpg archive/test\animal_crossing\8sr2fzd41aq41.jpg archive/test\animal_crossing\8wcem3qh8de41.jpg archive/test\animal_crossing\9f1ncxkdrtp41.jpg archive/test\animal_crossing\9f43oniyalr41.jpg archive/test\animal_crossing\9ic44op0xyu41.jpg archive/test\animal_crossing\9kfeii1ods051.jpg archive/test\animal_crossing\9mm78thz7jz41.jpg archive/test\animal_crossing\9nkshyrrm0u41.jpg archive/test\animal_crossing\9qfgjoud73s41.jpg archive/test\animal_crossing\9s3q7mmyed051.jpg archive/test\animal_crossing\9ws1onrchqu41.jpg archive/test\animal_crossing\9y8d7j0n1w151.jpg archive/test\animal_crossing\9z7t24i8ddw41.jpg archive/test\animal_crossing\10pvsht7efq41.jpg archive/test\animal_crossing\12g0suysuso41.jpg archive/test\animal_crossing\15dbc15lp2s41.jpg archive/test\animal_crossing\16zmxxo5fl251.jpg archive/test\animal_crossing\23gxv6wtxzu41.jpg archive/test\animal_crossing\23tuxt9bkev41.jpg archive/test\animal_crossing\27b4j8cwust41.jpg archive/test\animal_crossing\29ma2prvq9q41.jpg archive/test\animal_crossing\33s6x3zwrqz41.jpg archive/test\animal_crossing\34maiemumfo41.jpg archive/test\animal_crossing\34v33rzwnmz41.jpg archive/test\animal_crossing\35whcsia1kz41.jpg archive/test\animal_crossing\36zcf5oey2u41.jpg archive/test\animal_crossing\38axyof8eat41.jpg archive/test\animal_crossing\43pp3t31dzp41.jpg archive/test\animal_crossing\45kdvxyd2kq41.jpg archive/test\animal_crossing\50fbkx2nr6y41.jpg archive/test\animal_crossing\51cjlvkjesx41.jpg archive/test\animal_crossing\52kqzfbdza251.jpg archive/test\animal_crossing\62rx65xcwgp41.jpg archive/test\animal_crossing\63ns615okdy41.jpg archive/test\animal_crossing\68u6ah79mjq41.jpg archive/test\animal_crossing\68xk29grdw251.jpg archive/test\animal_crossing\74p1pze5l4051.jpg archive/test\animal_crossing\74wa4k1bk2051.jpg archive/test\animal_crossing\75xm3xzxfke41.jpg archive/test\animal_crossing\77t4q1bouzp41.jpg archive/test\animal_crossing\79e7jro755251.jpg archive/test\animal_crossing\086tektpmp051.jpg archive/test\animal_crossing\89ydqw3k2cr41.jpg archive/test\animal_crossing\89yxnklxkds41.jpg archive/test\animal_crossing\92crm8xnhdv41.jpg archive/test\animal_crossing\93nvxauhqx051.jpg archive/test\animal_crossing\94j41nmr2z051.jpg archive/test\animal_crossing\95itt33yxdv41.jpg archive/test\animal_crossing\95senj68juz41.jpg archive/test\animal_crossing\170bp0mkvju41.jpg archive/test\animal_crossing\176wf6duetq41.jpg archive/test\animal_crossing\0177myxmpiq41.jpg archive/test\animal_crossing\241lqn25dl151.jpg archive/test\animal_crossing\382c1abqgbw41.jpg archive/test\animal_crossing\530whgrnajx41.jpg archive/test\animal_crossing\624i2pna97q41.jpg archive/test\animal_crossing\800d1j0d4l251.jpg archive/test\animal_crossing\829OQv9.jpg archive/test\animal_crossing\870ng9avw8o41.jpg archive/test\animal_crossing\2670q4hbi1t41.jpg archive/test\animal_crossing\2731mrdf6y151.jpg archive/test\animal_crossing\8817or55wvs41.jpg archive/test\animal_crossing\9101cbvcjar41.jpg archive/test\animal_crossing\9278w203q2y41.jpg archive/test\animal_crossing\a2vvzng7g7v41.jpg archive/test\animal_crossing\a6m1x4fopez41.jpg archive/test\animal_crossing\a07q3sykzkz41.jpg archive/test\animal_crossing\a7esrnrg75151.jpg archive/test\animal_crossing\a7gup5ll2js41.jpg archive/test\animal_crossing\a85jxzlw1vy41.jpg archive/test\animal_crossing\aamjnmrm65i41.jpg archive/test\animal_crossing\ab92nh329mz41.jpg archive/test\animal_crossing\abx0demjy9x41.jpg archive/test\animal_crossing\ac7l2g40fi051.jpg archive/test\animal_crossing\ae4luzenhzw41.jpg archive/test\animal_crossing\ahnq9g4fh2p41.jpg archive/test\animal_crossing\ak4jo5tt13o41.jpg archive/test\animal_crossing\ak680mftdst41.jpg archive/test\animal_crossing\akz8t6x7e6u41.jpg archive/test\animal_crossing\al0shs07imx41.jpg archive/test\animal_crossing\AlACNko.jpg archive/test\animal_crossing\amwui5wy0ax41.jpg archive/test\animal_crossing\anwz7xe9cgr41.jpg archive/test\animal_crossing\aq1k09rfw0o41.jpg archive/test\animal_crossing\atld4xbdnyv41.jpg archive/test\animal_crossing\auevt60qvux41.jpg archive/test\animal_crossing\av0qy2xinfs41.jpg archive/test\animal_crossing\az7tuy96onn41.jpg archive/test\animal_crossing\azbgy4ku14v41.jpg archive/test\animal_crossing\b0kktbrcl6w41.jpg archive/test\animal_crossing\b5x6s7la21v41.jpg archive/test\animal_crossing\b6yc9yvet5251.jpg archive/test\animal_crossing\b9hfzol3nut41.jpg archive/test\animal_crossing\bccmkc303cs41.jpg archive/test\animal_crossing\bdby55yatls41.jpg archive/test\animal_crossing\bfyu5244pku41.jpg archive/test\animal_crossing\bhhnp13bfs151.jpg archive/test\animal_crossing\bm2laxad7fw41.jpg archive/test\animal_crossing\bmw5e4nk13n41.jpg archive/test\animal_crossing\bosfo9mtxix41.jpg archive/test\animal_crossing\brwlzwlbonv41.jpg archive/test\animal_crossing\btoloosiwys41.jpg archive/test\animal_crossing\buqv37zfu0w41.jpg archive/test\animal_crossing\bv8fzjyrluu41.jpg archive/test\animal_crossing\bvrn2ehkxvo41.jpg archive/test\animal_crossing\bz67JdS.jpg archive/test\animal_crossing\c01cwq2a9cz41.jpg archive/test\animal_crossing\c5cojm0drrz41.jpg archive/test\animal_crossing\c6h37ln0xlt41.jpg archive/test\animal_crossing\c7m1nm6rckz41.jpg archive/test\animal_crossing\c07285vt2ay41.jpg archive/test\animal_crossing\c80236ddahq41.jpg archive/test\animal_crossing\cc4rqooxtx051.jpg archive/test\animal_crossing\ccm3xnj2nzy41.jpg archive/test\animal_crossing\ccx8k056jto41.jpg archive/test\animal_crossing\cdkj75ly1st41.jpg archive/test\animal_crossing\ceehhoo6j8w41.jpg archive/test\animal_crossing\cfby0zxfqdw41.jpg archive/test\animal_crossing\chx0tdaihzt41.jpg archive/test\animal_crossing\cjpeg8izgsy41.jpg archive/test\animal_crossing\ckdgaab9d6v41.jpg archive/test\animal_crossing\ckvouhy857051.jpg archive/test\animal_crossing\cmrtvs5id7151.jpg archive/test\animal_crossing\coi10myq57r41.jpg archive/test\animal_crossing\conz6tr08mv41.jpg archive/test\animal_crossing\cq0pmqg8pe151.jpg archive/test\animal_crossing\crtltmrgkox41.jpg archive/test\animal_crossing\cz5092f3hz051.jpg archive/test\animal_crossing\d0p66nf7eyx41.jpg archive/test\animal_crossing\d6nm77zbqqn41.jpg archive/test\animal_crossing\d6uyw03yb0p41.jpg archive/test\animal_crossing\db254ohw6to41.jpg archive/test\animal_crossing\dbdqarquvaq41.jpg archive/test\animal_crossing\dbhg5nknpgr41.jpg archive/test\animal_crossing\dejy3yyz3y151.jpg archive/test\animal_crossing\DixTYFM.jpg archive/test\animal_crossing\dn1ymm9e9pn41.jpg archive/test\animal_crossing\dosv6e5lib051.jpg archive/test\animal_crossing\ds6c2bngovt41.jpg archive/test\animal_crossing\dsu5z5u3vsu41.jpg archive/test\animal_crossing\dxfqi7qxl9k41.jpg archive/test\animal_crossing\dxkeutjrcvr41.jpg archive/test\animal_crossing\e6brxe61cyw41.jpg archive/test\animal_crossing\e7gtx82nayw41.jpg archive/test\animal_crossing\e9ir5bpuh2w41.jpg archive/test\animal_crossing\e193r4coxto41.jpg archive/test\animal_crossing\ebb0wuj1y9o41.jpg archive/test\animal_crossing\ebj2fodndk251.jpg archive/test\animal_crossing\ebr019iyv5x41.jpg archive/test\animal_crossing\edzmjwz6psy41.jpg doom archive/test\doom\clxc6b100ws21.jpg archive/test\doom\0al47gmk8xs41.jpg archive/test\doom\0c5l0ss550p41.jpg archive/test\doom\0ecs6bzy49051.jpg archive/test\doom\0i7z32his4251.jpg archive/test\doom\0iihl37qztn41.jpg archive/test\doom\0oinnuls0gp41.jpg archive/test\doom\0p7edblbk8p41.jpg archive/test\doom\0p43pkc3jpn41.jpg archive/test\doom\0q0bg5pzgus41.jpg archive/test\doom\0t3s0u8rw7m41.jpg archive/test\doom\0tdpbogptdi41.jpg archive/test\doom\0u4sc9a1zp831.jpg archive/test\doom\0vvlmn9h7nu41.jpg archive/test\doom\0wovk4f2v0h41.jpg archive/test\doom\01vmlf4buap41.jpg archive/test\doom\1desbznqwep41.jpg archive/test\doom\1gy9hfyzkmp31.jpg archive/test\doom\1j7g7e4pp2f31.jpg archive/test\doom\1kunist4yeq31.jpg archive/test\doom\1odwlt3080p41.jpg archive/test\doom\1or123myt6151.jpg archive/test\doom\1snibvl6zpp41.jpg archive/test\doom\1uhs4gafad731.jpg archive/test\doom\1uifkvj06sk41.jpg archive/test\doom\1vg7jk65tez31.jpg archive/test\doom\1vumfgyx74o41.jpg archive/test\doom\1xlmtsssnf341.jpg archive/test\doom\1ysls0bwut251.jpg archive/test\doom\2al5h2tbpub21.jpg archive/test\doom\2chcpwqx8ho41.jpg archive/test\doom\2dfxle74a4u41.jpg archive/test\doom\2jkzeie0jcx41.jpg archive/test\doom\2kc00ewaazv41.jpg archive/test\doom\2qu6fck1ion41.jpg archive/test\doom\2ravrz45dhv41.jpg archive/test\doom\2rEmbwo.jpg archive/test\doom\2w2bmlvuf2i11.jpg archive/test\doom\2xg56b1ilme31.jpg archive/test\doom\2zrwo9apu0q41.jpg archive/test\doom\003kprvwysr41.jpg archive/test\doom\3bd13tz2i7q41.jpg archive/test\doom\3ii4tgihg2s41.jpg archive/test\doom\3iz296yovfs41.jpg archive/test\doom\3j6cs2mqujv41.jpg archive/test\doom\3kb6v6y9wfw41.jpg archive/test\doom\3l1pw0g64qo41.jpg archive/test\doom\3sgam7u8gaj41.jpg archive/test\doom\3t8w4mbjhs051.jpg archive/test\doom\3vtmpbso10w11.jpg archive/test\doom\3x76fnf5t5p41.jpg archive/test\doom\3xwa9qbnv0u41.jpg archive/test\doom\3z7tpqi98et41.jpg archive/test\doom\4c6ziha70mu41.jpg archive/test\doom\4igxwxi03or41.jpg archive/test\doom\4lcorvjpgwu41.jpg archive/test\doom\4mpf2rkgftp41.jpg archive/test\doom\4nese5zm7ye21.jpg archive/test\doom\4r4tqywnb7u41.jpg archive/test\doom\4sxahrwri9641.jpg archive/test\doom\4ttnvnb0iq051.jpg archive/test\doom\4xdnyq2yb3k31.jpg archive/test\doom\5bshdgj5zlq41.jpg archive/test\doom\5ccvhjp6jhk41.jpg archive/test\doom\5ncnb04v26t41.jpg archive/test\doom\5piuumui8ln41.jpg archive/test\doom\5ugtlptn0o631.jpg archive/test\doom\5v3ruv26gzn41.jpg archive/test\doom\5vcptmnsu0s41.jpg archive/test\doom\6bx5outyw7p41.jpg archive/test\doom\6ec5jyr57jo41.jpg archive/test\doom\6ife5p6ecxd41.jpg archive/test\doom\6ijl2n0tt1c21.jpg archive/test\doom\6iu55lbl3pj41.jpg archive/test\doom\6k0cx05ktx441.jpg archive/test\doom\6mfhsgu63hx41.jpg archive/test\doom\6nqw8yqrbcl41.jpg archive/test\doom\6nr896pfw2t31.jpg archive/test\doom\6nu1yps59s051.jpg archive/test\doom\6qwnlgi3osh31.jpg archive/test\doom\6qzlx9s5ha431.jpg archive/test\doom\6tHQ2Ns.jpg archive/test\doom\6wgiymw7qmp41.jpg archive/test\doom\6wqdw6iyzok31.jpg archive/test\doom\6xbpep0g42s41.jpg archive/test\doom\07fili2nses41.jpg archive/test\doom\7b2m31wofk641.jpg archive/test\doom\7c3lyx28tzt41.jpg archive/test\doom\7gh14vki09p41.jpg archive/test\doom\7o1uv92pf4s41.jpg archive/test\doom\7sw501vultm31.jpg archive/test\doom\7vo8ybo1skm41.jpg archive/test\doom\7vpp45mytrn41.jpg archive/test\doom\8bcs70vryno41.jpg archive/test\doom\8cjv9tdlnzs41.jpg archive/test\doom\8eDHQqS.jpg archive/test\doom\8fto7ucz26641.jpg archive/test\doom\8i04m7bwfo051.jpg archive/test\doom\8iOjAWe.jpg archive/test\doom\8kea3k0a99o41.jpg archive/test\doom\8mpv1w6hv2p41.jpg archive/test\doom\8otyi9hamct41.jpg archive/test\doom\8rgk28sk63a31.jpg archive/test\doom\8s68yn8wi6b41.jpg archive/test\doom\8si5yl8cu2541.jpg archive/test\doom\8v7vsv172t051.jpg archive/test\doom\8vc9cwbj34251.jpg archive/test\doom\8vpwqkhipi151.jpg archive/test\doom\8w85afmqwtq41.jpg archive/test\doom\8wr5wde41ht41.jpg archive/test\doom\8zvfzi0w2og31.jpg archive/test\doom\9ctuefjh1rm41.jpg archive/test\doom\9dlgye9ecep41.jpg archive/test\doom\9fd5hiealsu41.jpg archive/test\doom\9ht6b1kmf6731.jpg archive/test\doom\9itb2zwk0bo41.jpg archive/test\doom\9jnzs825cem21.jpg archive/test\doom\9mpuxs9oo3p41.jpg archive/test\doom\9my0pa9jf5u41.jpg archive/test\doom\9n53e3cc2qo41.jpg archive/test\doom\9n773cwapbo41.jpg archive/test\doom\9ti85wdzgfs41.jpg archive/test\doom\9tqxpwuw5dq41.jpg archive/test\doom\9zd127wsu2n21.jpg archive/test\doom\14rcw19xb0h41.jpg archive/test\doom\18t04erwchn41.jpg archive/test\doom\23t8wopwtts41.jpg archive/test\doom\24u6bnam9by41.jpg archive/test\doom\26a97ocpvmw41.jpg archive/test\doom\27y01mezsly21.jpg archive/test\doom\31gdidag9it41.jpg archive/test\doom\34a2yor313251.jpg archive/test\doom\40p91imiaz051.jpg archive/test\doom\41sqdgyaj4o41.jpg archive/test\doom\45lkue67w9a31.jpg archive/test\doom\46idi7ua0ma41.jpg archive/test\doom\53k85690bc741.jpg archive/test\doom\54pixwaa0y331.jpg archive/test\doom\58exll0jx5241.jpg archive/test\doom\59f543h0zfp41.jpg archive/test\doom\60m316tz31741.jpg archive/test\doom\62k1736jpez41.jpg archive/test\doom\70j7urf9t1u41.jpg archive/test\doom\71mvam92e7f41.jpg archive/test\doom\72twsly4v7i41.jpg archive/test\doom\73ysdwm7lx431.jpg archive/test\doom\76kutc50hbo41.jpg archive/test\doom\77fw2i46wfn41.jpg archive/test\doom\78sgcpeiljw41.jpg archive/test\doom\80wln8jiyso41.jpg archive/test\doom\84favyra9xq41.jpg archive/test\doom\89lbf73li2v41.jpg archive/test\doom\96d2rfs8mh431.jpg archive/test\doom\180mf4lt79l31.jpg archive/test\doom\280hldd1i5251.jpg archive/test\doom\373ovvidqmx41.jpg archive/test\doom\733kr2ixqd541.jpg archive/test\doom\806yecxwtms41.jpg archive/test\doom\928z9h23sp251.jpg archive/test\doom\1869awy2j1p41.jpg archive/test\doom\3615jytspzg31.jpg archive/test\doom\4278caqzhui31.jpg archive/test\doom\5203c54f0jo31.jpg archive/test\doom\5316crymj9x41.jpg archive/test\doom\7810sp2lwun41.jpg archive/test\doom\7893ogdapdz41.jpg archive/test\doom\9636gdkoj8d21.jpg archive/test\doom\76052iu7zdt41.jpg archive/test\doom\a4smr48spjz41.jpg archive/test\doom\a4xv8abyimo21.jpg archive/test\doom\a6qi2w8lsv531.jpg archive/test\doom\a07mti5yvol41.jpg archive/test\doom\a9aee4s4nmo41.jpg archive/test\doom\a46ep8c89jq41.jpg archive/test\doom\a56ql61z32g41.jpg archive/test\doom\a3578oj6dkw41.jpg archive/test\doom\ab4rer53uug31.jpg archive/test\doom\ajbtix5go3c31.jpg archive/test\doom\ak3j1dwwqpo41.jpg archive/test\doom\aL2SqkY.jpg archive/test\doom\alxs1nonx5o31.jpg archive/test\doom\am44icg7y9r41.jpg archive/test\doom\ao9x8kxulax41.jpg archive/test\doom\aq0xqqjujnr31.jpg archive/test\doom\au8drs67x7y41.jpg archive/test\doom\austmhcaccs41.jpg archive/test\doom\awi18dqmf7r41.jpg archive/test\doom\axvx69l9xau41.jpg archive/test\doom\ayr5bbjy0oo41.jpg archive/test\doom\b7kjl55n6s131.jpg archive/test\doom\bczujeyv9ur41.jpg archive/test\doom\bf9ojmz86vj31.jpg archive/test\doom\bfsd4zxgcww41.jpg archive/test\doom\bizvfgf5js431.jpg archive/test\doom\bktw15fadjv41.jpg archive/test\doom\bn8h36891az41.jpg archive/test\doom\boz44y6cffk41.jpg archive/test\doom\bt1uub7yac631.jpg archive/test\doom\buum2l6wkxs11.jpg archive/test\doom\buwnc37azvo41.jpg archive/test\doom\bvpbvf68v7p41.jpg archive/test\doom\by5d7vhomhl41.jpg archive/test\doom\bz8gh35gwsv41.jpg archive/test\doom\bzfflut29q841.jpg archive/test\doom\bzyl5fpj00p41.jpg archive/test\doom\c1dkr5y7qwy41.jpg archive/test\doom\c2ghxijo1qm41.jpg archive/test\doom\c6gih293mzr41.jpg archive/test\doom\c6kwhhh5n4q41.jpg archive/test\doom\c7ny6mujkex41.jpg archive/test\doom\c40r8y1lkvm41.jpg archive/test\doom\c79oubyo5eo41.jpg archive/test\doom\c253iqmbjhu41.jpg archive/test\doom\c857636.jpg archive/test\doom\cahmu5f1x2w41.jpg archive/test\doom\cahoikmgibc41.jpg archive/test\doom\cdbi9isv54n41.jpg archive/test\doom\cg1wru6phrd31.jpg archive/test\doom\cgj4oeyh2jr41.jpg archive/test\doom\cgsoj0zurx231.jpg archive/test\doom\ch08eanwsxy21.jpg archive/test\doom\cjwwmpl7w9k41.jpg
#convert lists to arrays (easier to work with)
test_images = np.array(train_images)
test_labels = np.array(train_labels)
#encode labels from string to integers
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(test_labels)
test_labels_encoded = le.transform(test_labels)
le.fit(train_labels)
train_labels_encoded = le.transform(train_labels)
#copying data into new variables. These variable are labeled more accuratly for model training and will make the next steps easier to comprehend.
x_train, y_train, x_test, y_test = train_images, train_labels_encoded, test_images, test_labels_encoded
#rescaling pixel values between 0 and 1. (normalizing)
x_train, x_test = x_train / 255.0, x_test / 255.0
#importing VGG model
VGG_model = VGG16(weights='imagenet', include_top=False, input_shape=(size, size, 3))
#Make loaded layers as non-trainable, allowing us to work with pre-trained weights
for layer in VGG_model.layers:
layer.trainable = False
#Extracting features from convolutional network for RF
feature_extractor=VGG_model.predict(x_train)
features = feature_extractor.reshape(feature_extractor.shape[0], -1)
X_for_training = features #This is our X input to RF
import xgboost as xgb
model = xgb.XGBClassifier()
model.fit(X_for_training, y_train)
C:\Users\Charlie\AppData\Local\Programs\Python\Python39\lib\site-packages\xgboost\sklearn.py:1146: UserWarning: The use of label encoder in XGBClassifier is deprecated and will be removed in a future release. To remove this warning, do the following: 1) Pass option use_label_encoder=False when constructing XGBClassifier object; and 2) Encode your labels (y) as integers starting with 0, i.e. 0, 1, 2, ..., [num_class - 1]. warnings.warn(label_encoder_deprecation_msg, UserWarning) [20:18:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.4.0/src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,
importance_type='gain', interaction_constraints='',
learning_rate=0.300000012, max_delta_step=0, max_depth=6,
min_child_weight=1, missing=nan, monotone_constraints='()',
n_estimators=100, n_jobs=16, num_parallel_tree=1, random_state=0,
reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,
tree_method='exact', validate_parameters=1, verbosity=None)
#Extracting features from testing data
X_test_feature = VGG_model.predict(x_test)
#reshaping
X_test_features = X_test_feature.reshape(X_test_feature.shape[0], -1)
#Now predict using the trained RF model.
prediction = model.predict(X_test_features)
#Inverse le transform to get original text labels back (AnimalCrossing and Doom, rather than 0 or 1).
prediction = le.inverse_transform(prediction)
print ("Accuracy = ", accuracy_score(test_labels, prediction))
Accuracy = 1.0
#creating and displaying a confusion matrix
cm = confusion_matrix(test_labels, prediction)
sns.heatmap(cm, annot=True)
<AxesSubplot:>
#Check results on a few select images.
#EACH TIME THIS BLOCK IS RUN, A NEW IMAGE, PREDICTED LABEL, AND ACTUAL LABEL IS DISPLAYED
n=np.random.randint(0, x_test.shape[0])
img = x_test[n]
plt.imshow(img)
input_img = np.expand_dims(img, axis=0) #Expand dims so the input is (num images, x, y, c)
input_img_feature=VGG_model.predict(input_img)
input_img_features=input_img_feature.reshape(input_img_feature.shape[0], -1)
prediction = model.predict(input_img_features)[0]
prediction = le.inverse_transform([prediction]) #Reverse the label encoder to original name
print("The prediction for this image is: ", prediction)
print("The actual label for this image is: ", test_labels[n])
The prediction for this image is: ['animal_crossing'] The actual label for this image is: animal_crossing
To my suprise, the XGBoost model resulted in 100% accuracy. After running a confusion matrix, and a simple test that displays a random image, the predicted value, and the actual value, everything checks out. I do not believe it is actually realistic that a model can classify images with 100% accuracy, so something in the way the data was prepared for feature extraction must not be correct, hoewever I can't figure out what it is.
source code: https://www.datacamp.com/community/tutorials/decision-tree-classification-python
from sklearn.tree import DecisionTreeClassifier # Import Decision Tree Classifier
from sklearn.model_selection import train_test_split # Import train_test_split function
from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation
size = 256
#Initialize lists to capture training data/labels
train_images = []
train_labels = []
for directory_path in glob.glob("archive/train/*"):
label = directory_path.split("\\")[-1]
print(label)
for img_path in glob.glob(os.path.join(directory_path, "*.jpg")):
print(img_path)
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.resize(img, (size, size)) #using open cv2 to resize images
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) #and change the color from BGR to RGB
train_images.append(img)
train_labels.append(label)
ing\tezpldyxa1x41.jpg archive/train\animal_crossing\thm0z4ykvss41.jpg archive/train\animal_crossing\thqiug0b5a051.jpg archive/train\animal_crossing\tiw9kuhlwlx41.jpg archive/train\animal_crossing\tlkrdcjx5tp41.jpg archive/train\animal_crossing\tmjnrzx5ncx41.jpg archive/train\animal_crossing\TnKxDqh.jpg archive/train\animal_crossing\tQxPq0Q.jpg archive/train\animal_crossing\tvodupn3e0s41.jpg archive/train\animal_crossing\u1caidls78v41.jpg archive/train\animal_crossing\u3azew2uyxy41.jpg archive/train\animal_crossing\ubyghe0ue7t41.jpg archive/train\animal_crossing\ufmdogx78lx41.jpg archive/train\animal_crossing\uhjr138rb2p41.jpg archive/train\animal_crossing\ujg0iwdhdyw41.jpg archive/train\animal_crossing\ULAJ543.jpg archive/train\animal_crossing\uowc5th2kht41.jpg archive/train\animal_crossing\uqlg2mzz7lt41.jpg archive/train\animal_crossing\uqnqeu1rfxo41.jpg archive/train\animal_crossing\ut4dpd5d51x41.jpg archive/train\animal_crossing\ux7q18g45lx41.jpg archive/train\animal_crossing\uxern5lf8cx41.jpg archive/train\animal_crossing\v0z45yjepfy41.jpg archive/train\animal_crossing\v3oilezlgjr41.jpg archive/train\animal_crossing\v5iq9fi5pyv41.jpg archive/train\animal_crossing\v8lonwbzcj151.jpg archive/train\animal_crossing\v97ek1e8tmu41.jpg archive/train\animal_crossing\vhuszhh534r41.jpg archive/train\animal_crossing\viycp60oles41.jpg archive/train\animal_crossing\vm57fdiht1r41.jpg archive/train\animal_crossing\vn8d1bc45vr41.jpg archive/train\animal_crossing\vnlr1p7no9m41.jpg archive/train\animal_crossing\vq2rft8te9t41.jpg archive/train\animal_crossing\vsfzniy786z41.jpg archive/train\animal_crossing\vt3tzr0v62t41.jpg archive/train\animal_crossing\w0ddyr9atvu41.jpg archive/train\animal_crossing\W1dh6EI.jpg archive/train\animal_crossing\w3lwd81kfsz41.jpg archive/train\animal_crossing\w4c4e7ocrtt41.jpg archive/train\animal_crossing\w4pgzhc6ic531.jpg archive/train\animal_crossing\w7bhc0gnsrp41.jpg archive/train\animal_crossing\we19mz2aybq41.jpg archive/train\animal_crossing\weipksgb6lx41.jpg archive/train\animal_crossing\wgboytbaqdt41.jpg archive/train\animal_crossing\wgok1c8j7ex41.jpg archive/train\animal_crossing\wgwa7ynh4au41.jpg archive/train\animal_crossing\wif4ktur1t251.jpg archive/train\animal_crossing\wiyl0tl0n8r41.jpg archive/train\animal_crossing\wje27d5vqby41.jpg archive/train\animal_crossing\WkC577D.jpg archive/train\animal_crossing\wksvtldspcw41.jpg archive/train\animal_crossing\wopcfk74tzo41.jpg archive/train\animal_crossing\wQI3VnL.jpg archive/train\animal_crossing\wssx8Z9.jpg archive/train\animal_crossing\wzbl8k6i1by41.jpg archive/train\animal_crossing\wzu6d3xvkqx41.jpg archive/train\animal_crossing\x5pw0wvvmtv41.jpg archive/train\animal_crossing\x4972xloe5151.jpg archive/train\animal_crossing\xhabzy56jmy41.jpg archive/train\animal_crossing\xhd2baiwj5z41.jpg archive/train\animal_crossing\xnq12gew87u41.jpg archive/train\animal_crossing\xq4bpw3jldu41.jpg archive/train\animal_crossing\y3iezv2e6yw41.jpg archive/train\animal_crossing\y4px7ci1lev41.jpg archive/train\animal_crossing\y5ijsyipij251.jpg archive/train\animal_crossing\y9gqmuqe7q151.jpg archive/train\animal_crossing\Y71KUFN.jpg archive/train\animal_crossing\ybn25fuvylv41.jpg archive/train\animal_crossing\ydcl9x6j78w41.jpg archive/train\animal_crossing\ydwaywmacyy41.jpg archive/train\animal_crossing\ye94d0hzodt41.jpg archive/train\animal_crossing\yf7zsf12ymt41.jpg archive/train\animal_crossing\ygdv36iprtu41.jpg archive/train\animal_crossing\yh5k1gsg81u41.jpg archive/train\animal_crossing\yin86bvqqwt41.jpg archive/train\animal_crossing\yl0dbtm8p5u41.jpg archive/train\animal_crossing\yn8B54E.jpg archive/train\animal_crossing\ynaooejxfkv41.jpg archive/train\animal_crossing\ynkgq8cqv9251.jpg archive/train\animal_crossing\yoaeh14klxr41.jpg archive/train\animal_crossing\yqlb2sk00jp41.jpg archive/train\animal_crossing\yqmxamjjc5v41.jpg archive/train\animal_crossing\yunthb67leq41.jpg archive/train\animal_crossing\yusms7axbto41.jpg archive/train\animal_crossing\ywv1q7miwsy41.jpg archive/train\animal_crossing\yx4q0749anr41.jpg archive/train\animal_crossing\yxvzr1tmaev41.jpg archive/train\animal_crossing\yzn7hyoklqz41.jpg archive/train\animal_crossing\z3g83605u6151.jpg archive/train\animal_crossing\z3unrxrohzt41.jpg archive/train\animal_crossing\z6231rng87t41.jpg archive/train\animal_crossing\zbikvdr8olz41.jpg archive/train\animal_crossing\zc9dcty1n7x41.jpg archive/train\animal_crossing\zduzhjxgdar41.jpg archive/train\animal_crossing\zergm3hguss41.jpg archive/train\animal_crossing\zgxnww40fa051.jpg archive/train\animal_crossing\zje33cdc24z41.jpg archive/train\animal_crossing\Zjo5hx3.jpg archive/train\animal_crossing\zlpum6ai3il41.jpg archive/train\animal_crossing\zly635xzss331.jpg archive/train\animal_crossing\znpd098mrg251.jpg archive/train\animal_crossing\zqr2lu7ytlz41.jpg archive/train\animal_crossing\ztur5io750z41.jpg archive/train\animal_crossing\zu84yanzx5r41.jpg archive/train\animal_crossing\zuwsu9c11p251.jpg archive/train\animal_crossing\zvmbbtst3ty41.jpg archive/train\animal_crossing\zxh8tht0icu41.jpg archive/train\animal_crossing\zymakr80i8q41.jpg archive/train\animal_crossing\zzgx4krvjup41.jpg doom archive/train\doom\co4m0ecwcmu41.jpg archive/train\doom\cr65z9yucvx11.jpg archive/train\doom\cxowqxjvkzq41.jpg archive/train\doom\d2gryclsf3731.jpg archive/train\doom\d5gjva6g1s241.jpg archive/train\doom\dbkt6ll0g6e41.jpg archive/train\doom\ddvaaec5vao41.jpg archive/train\doom\df7ufpug69o41.jpg archive/train\doom\dgovey0djwg41.jpg archive/train\doom\dhpg27qzffj41.jpg archive/train\doom\dkbdimdugen41.jpg archive/train\doom\dlj722lgx4251.jpg archive/train\doom\dnmde0doj7p41.jpg archive/train\doom\doiyfmmaspr41.jpg archive/train\doom\dxa8086pwdb41.jpg archive/train\doom\dY6cG3U.jpg archive/train\doom\dydvn9lpsil41.jpg archive/train\doom\dz1xwxlnfrp41.jpg archive/train\doom\e0skxeer0mp41.jpg archive/train\doom\e1a2dkzwh5w41.jpg archive/train\doom\e7ff8trftcz41.jpg archive/train\doom\e81m057ip5v41.jpg archive/train\doom\eb75f1te78g41.jpg archive/train\doom\ebvwi100l8u41.jpg archive/train\doom\edmofog674m41.jpg archive/train\doom\efdvm10gqoo41.jpg archive/train\doom\eflb13v1llr41.jpg archive/train\doom\eg3mu7r232q41.jpg archive/train\doom\ehh0c9wo3lk31.jpg archive/train\doom\EHkNSbj.jpg archive/train\doom\ehmxr5o8aqt41.jpg archive/train\doom\eifwd7ncfkf41.jpg archive/train\doom\ej2ew008cx051.jpg archive/train\doom\ekmkzznqogo41.jpg archive/train\doom\etqyw0pbk1u41.jpg archive/train\doom\eubprx3fayn41.jpg archive/train\doom\ewpuxr44dix31.jpg archive/train\doom\ewxjyfgkqy931.jpg archive/train\doom\exl00z7lnrf41.jpg archive/train\doom\exrlujsih0q41.jpg archive/train\doom\ezfhxms42ar41.jpg archive/train\doom\f1ausyas8bv41.jpg archive/train\doom\f4ovxvk1n1j21.jpg archive/train\doom\f5vux5s1wko41.jpg archive/train\doom\f9zqbdn6m2y41.jpg archive/train\doom\f17bqkjio0a41.jpg archive/train\doom\fdhgzoo5oa251.jpg archive/train\doom\fdqsbwz658z41.jpg archive/train\doom\fezolyxfxuo31.jpg archive/train\doom\fhj6w9wq35j41.jpg archive/train\doom\fhx6xx20fao41.jpg archive/train\doom\fil3dbmntl841.jpg archive/train\doom\fki3ayyvha831.jpg archive/train\doom\fp5x77atmri31.jpg archive/train\doom\fr8cb5pux5531.jpg archive/train\doom\frovn5ohsv931.jpg archive/train\doom\fsgfpkqclcj31.jpg archive/train\doom\fslf7r29i0f31.jpg archive/train\doom\ftayvcwnxap41.jpg archive/train\doom\ftq1dtlrwfo11.jpg archive/train\doom\fw1xeqqqnzl31.jpg archive/train\doom\fypx2trhrqm41.jpg archive/train\doom\g0ffa5l44zx41.jpg archive/train\doom\g4yivjo27ea41.jpg archive/train\doom\g20sjv0ljah31.jpg archive/train\doom\g26xfqqcein41.jpg archive/train\doom\gdgbv9zwilt41.jpg archive/train\doom\geb8pvcg3i841.jpg archive/train\doom\gguzfwm0ws341.jpg archive/train\doom\gi5w0jexd1o41.jpg archive/train\doom\gkeqq9ry0bo41.jpg archive/train\doom\gnsj5xqj9ep41.jpg archive/train\doom\gpmq2vu9s7q41.jpg archive/train\doom\gscu57ei43141.jpg archive/train\doom\gvdd0wig8wu41.jpg archive/train\doom\gyb7sjvaqah41.jpg archive/train\doom\h3g92dztaip41.jpg archive/train\doom\h3h1ydn4uk151.jpg archive/train\doom\h3u4edz561n41.jpg archive/train\doom\h4xq6ip3dbp41.jpg archive/train\doom\h5lvupes42241.jpg archive/train\doom\h8kh9zjsmok21.jpg archive/train\doom\h8vgtz638lr41.jpg archive/train\doom\h9nkiyuo89y41.jpg archive/train\doom\h69k6nvcrqa41.jpg archive/train\doom\ha6664k810941.jpg archive/train\doom\hcpe9eo9l8331.jpg archive/train\doom\hdqewawan9p41.jpg archive/train\doom\hh2mh0zahdv41.jpg archive/train\doom\hltdmjdplh531.jpg archive/train\doom\holf2wkvblv41.jpg archive/train\doom\hs7q6xzn29131.jpg archive/train\doom\hskukn5r62b41.jpg archive/train\doom\hsnvsywinoo41.jpg archive/train\doom\htkxum92zb051.jpg archive/train\doom\hueyivqmies41.jpg archive/train\doom\hybrf68w2v631.jpg archive/train\doom\i6cofa2.jpg archive/train\doom\i8m7jw1p49x31.jpg archive/train\doom\idug4d2170831.jpg archive/train\doom\iifsgokr78o41.jpg archive/train\doom\ik4d2mpi1fo41.jpg archive/train\doom\ikix5vc.jpg archive/train\doom\iMniTZ0.jpg archive/train\doom\insrlmeyxv051.jpg archive/train\doom\iquulqh5gkz41.jpg archive/train\doom\ittwha79pto21.jpg archive/train\doom\iv3wjg68qkt41.jpg archive/train\doom\iwyhjdg6jv841.jpg archive/train\doom\ixyxz784e3r41.jpg archive/train\doom\izbtuqy7ybl41.jpg archive/train\doom\j01d2yhvblm11.jpg archive/train\doom\j1wb97oya5g41.jpg archive/train\doom\j6imyz9j4s251.jpg archive/train\doom\j9fq1uxz9ap41.jpg archive/train\doom\jdeosa4mzje41.jpg archive/train\doom\jeEyt0q.jpg archive/train\doom\jg51bfd4nmx41.jpg archive/train\doom\jk1lza5gw3h41.jpg archive/train\doom\jrk0eogay8s41.jpg archive/train\doom\jrXwn5X.jpg archive/train\doom\jt5ztcv7e2t41.jpg archive/train\doom\jwck8uf9uto41.jpg archive/train\doom\jybtzgg0jqr41.jpg archive/train\doom\k23ksr31qar41.jpg archive/train\doom\k50qaldi23251.jpg archive/train\doom\kalnr6lu6gy31.jpg archive/train\doom\kb847ien3wj41.jpg archive/train\doom\kbi0wq1wl9o41.jpg archive/train\doom\kcczvtzp2h931.jpg archive/train\doom\KCk4N0n.jpg archive/train\doom\kg2hhuel2vx31.jpg archive/train\doom\kgo5y4wx7rp41.jpg archive/train\doom\kho8qirfizy41.jpg archive/train\doom\ki1vqelx7ld41.jpg archive/train\doom\kickcy7tt7t41.jpg archive/train\doom\kixshih85vi41.jpg archive/train\doom\kkfnjrzuxa141.jpg archive/train\doom\klis8kyv1ql31.jpg archive/train\doom\ko8kf69302o41.jpg archive/train\doom\koe437qc97v41.jpg archive/train\doom\KpQRTFG.jpg archive/train\doom\ksn72cinsy151.jpg archive/train\doom\l20q5d8anh341.jpg archive/train\doom\l875SoO.jpg archive/train\doom\ld3g8a494ip41.jpg archive/train\doom\ldezto128im41.jpg archive/train\doom\lhjv3ah1pp431.jpg archive/train\doom\ll6pb26j76l41.jpg archive/train\doom\lnsgs5chv9m41.jpg archive/train\doom\lnwys7n481u41.jpg archive/train\doom\lohb806075051.jpg archive/train\doom\lp1ljkhlyfm41.jpg archive/train\doom\lq9wvun2d2t41.jpg archive/train\doom\lqqeknkcrbn31.jpg archive/train\doom\lqu50c4mqvz31.jpg archive/train\doom\lrsenmu9q5l41.jpg archive/train\doom\lsdyqogmu7v41.jpg archive/train\doom\lsje6vjnrtn41.jpg archive/train\doom\lu3lsgc5rcr41.jpg archive/train\doom\lv7wi59wjgs41.jpg archive/train\doom\lwfoum0k89o41.jpg archive/train\doom\lyvkf5p6ymz41.jpg archive/train\doom\lzk0s9mx4po41.jpg archive/train\doom\lzre9qnqo2q41.jpg archive/train\doom\m4xfwt0hfao41.jpg archive/train\doom\m6mgipw3qso41.jpg archive/train\doom\m8205xouhmp41.jpg archive/train\doom\mabem4t1ppp41.jpg archive/train\doom\mbgapc4q9js41.jpg archive/train\doom\mcgys8844ku41.jpg archive/train\doom\mJaAUEA.jpg archive/train\doom\mjl3ryv0ejh41.jpg archive/train\doom\mKiEx0Y.jpg archive/train\doom\mlt3z6vdf1i31.jpg archive/train\doom\mlwgn153nw241.jpg archive/train\doom\mmumnccxumt41.jpg archive/train\doom\mqpbe6wpuiq41.jpg archive/train\doom\mqqd494cdst41.jpg archive/train\doom\msarkaic83r41.jpg archive/train\doom\mSINVLA.jpg archive/train\doom\myzv7nbnswr41.jpg archive/train\doom\mz2duvh5xwr41.jpg archive/train\doom\n3g5vzaeb1z41.jpg archive/train\doom\n5bcwpo211o41.jpg archive/train\doom\n5rum91r23p41.jpg archive/train\doom\n9ji4n9qdzu41.jpg archive/train\doom\n314phlf09r41.jpg archive/train\doom\nc5mqymkx4331.jpg archive/train\doom\nddr4q3fzju41.jpg archive/train\doom\ndmv0fhpzup41.jpg archive/train\doom\nee3x3ro0d251.jpg archive/train\doom\nkbaiv68n3l41.jpg archive/train\doom\nmjw64vb0kg41.jpg archive/train\doom\nqawxp7e0vr41.jpg archive/train\doom\nrjbcscyr5o41.jpg archive/train\doom\nrx53le81co41.jpg archive/train\doom\ns5js6nvjxw41.jpg archive/train\doom\numuacocm9931.jpg archive/train\doom\o1drvcdxz6251.jpg archive/train\doom\o3segyhhlmu41.jpg archive/train\doom\o4q597v604251.jpg archive/train\doom\o6eijlmh9c151.jpg archive/train\doom\o44k0a0j7sl21.jpg archive/train\doom\o93jc5r2e0o41.jpg archive/train\doom\od7497obk3831.jpg archive/train\doom\odxmzklsff741.jpg archive/train\doom\of5t94mga4i21.jpg archive/train\doom\off0e2elr0p41.jpg archive/train\doom\ogqovinzbew41.jpg archive/train\doom\ohjf4jogmku41.jpg archive/train\doom\okp3cpdobup41.jpg archive/train\doom\ooqoabybtcp41.jpg archive/train\doom\opep4iricr041.jpg archive/train\doom\oqbjvgqrh0f41.jpg archive/train\doom\originals.jpg archive/train\doom\ots2pux9s7q41.jpg archive/train\doom\ovl4sms2ohs41.jpg archive/train\doom\ow31wntcsnv41.jpg archive/train\doom\ozvk8gx9vi251.jpg archive/train\doom\p0trjvlit1o41.jpg archive/train\doom\p1ao5jhay7p41.jpg archive/train\doom\p3v4vezbstp41.jpg archive/train\doom\p8k09f6wb0p41.jpg archive/train\doom\p8ul4rlfrer41.jpg archive/train\doom\p28lxf95oou41.jpg archive/train\doom\pa9t7wdwvbk41.jpg archive/train\doom\PaLUI2r.jpg archive/train\doom\pcz0313c6ey41.jpg archive/train\doom\pe0fj1yx0ka31.jpg archive/train\doom\ped01zzlpyk41.jpg archive/train\doom\pkxy65e7qp341.jpg archive/train\doom\pp338396rcz41.jpg archive/train\doom\psu073yh6yo41.jpg archive/train\doom\psusjw84imo41.jpg archive/train\doom\pswlw2qn3uh41.jpg archive/train\doom\Pxi4PNX.jpg archive/train\doom\pyj6r0wh8h541.jpg archive/train\doom\pzyy7d7gedr41.jpg archive/train\doom\q5xdvd465el41.jpg archive/train\doom\q7z24nrzjbr41.jpg archive/train\doom\q41zhv0e65251.jpg archive/train\doom\qb2t52fsfto41.jpg archive/train\doom\qbv3zoeu70w41.jpg archive/train\doom\qdyak4x4i1251.jpg archive/train\doom\qgfyc929tzn41.jpg archive/train\doom\qhmyq1ebs4q41.jpg archive/train\doom\qied8a3vsyx41.jpg archive/train\doom\qisy4hvhk0q41.jpg archive/train\doom\qkwwa5l2hn641.jpg archive/train\doom\qnp7ovpk0jr31.jpg archive/train\doom\qqesi4gwmb421.jpg archive/train\doom\qqjgr307kdr41.jpg archive/train\doom\qtibz6r41bw41.jpg archive/train\doom\qtsfn5e4r9o41.jpg archive/train\doom\qvu9h185rur41.jpg archive/train\doom\qz9ccl2xios41.jpg archive/train\doom\r1spcvcr2st41.jpg archive/train\doom\rbqi7hs14oi41.jpg archive/train\doom\rdmlbdd49zi31.jpg archive/train\doom\rf60zmljrrt41.jpg archive/train\doom\rfsrix1e8cj41.jpg archive/train\doom\rhj6apbza3p41.jpg archive/train\doom\ri9hjen2rz051.jpg archive/train\doom\rjlef08ax8d41.jpg archive/train\doom\rlzpfd6jawo41.jpg archive/train\doom\rnzbczz6e9c41.jpg archive/train\doom\rogkbl9rf5251.jpg archive/train\doom\rqrmlcbrhsk31.jpg archive/train\doom\rrb5qqmdubo41.jpg archive/train\doom\rs6u382hge051.jpg archive/train\doom\ru9hyxhnqsj41.jpg archive/train\doom\rwta87r0whl41.jpg archive/train\doom\ryu8z32brbo41.jpg archive/train\doom\s.jpg archive/train\doom\s2cqf8vm9wz41.jpg archive/train\doom\s3iwl9xgczx41.jpg archive/train\doom\s40ixoblh2v41.jpg archive/train\doom\s89ngxqzi5z41.jpg archive/train\doom\s418e27xxal41.jpg archive/train\doom\sBqdSc8.jpg archive/train\doom\sfxshuqru7h41.jpg archive/train\doom\sgixjruqciu21.jpg archive/train\doom\sgqnqbh63af41.jpg archive/train\doom\shm402hnl4v41.jpg archive/train\doom\silr95mgbdz41.jpg archive/train\doom\smpxs38j4h251.jpg archive/train\doom\soec2x0t63051.jpg archive/train\doom\svztqowhxbo41.jpg archive/train\doom\szvvykvfpbs31.jpg archive/train\doom\t2zcvuuq2mu31.jpg archive/train\doom\t3t8eew13wv41.jpg archive/train\doom\tacx0dpvnha41.jpg archive/train\doom\tavf2blom1q41.jpg archive/train\doom\tjoxjvskafp41.jpg archive/train\doom\tl5mquu4l9j41.jpg archive/train\doom\to9ntvumgqu41.jpg archive/train\doom\tp4u33n34yj41.jpg archive/train\doom\tqm7tsagrdz41.jpg archive/train\doom\tuxjtl2vr8n41.jpg archive/train\doom\u0k0i1oj7tr41.jpg archive/train\doom\u1a3p6o3d9o41.jpg archive/train\doom\u5w25uefinp21.jpg archive/train\doom\u25lzwunmdz21.jpg archive/train\doom\u41d2sjgit641.jpg archive/train\doom\uaftik944w941.jpg archive/train\doom\ubvgezdua7u41.jpg archive/train\doom\udm1rk7zhhg31.jpg archive/train\doom\uf7dxqa622o41.jpg archive/train\doom\ufizc3vq9pw31.jpg archive/train\doom\ugs79t7znwe41.jpg archive/train\doom\ugzimfspx2p41.jpg archive/train\doom\uj7vci21e7p41.jpg archive/train\doom\Ulj3uL9.jpg archive/train\doom\um5igr4s9zo41.jpg archive/train\doom\unqa1b2rl5y21.jpg archive/train\doom\UQIXCFH.jpg archive/train\doom\uqjae0yhh0q41.jpg archive/train\doom\uz91apmzpkj41.jpg archive/train\doom\uzpuxz4d99p41.jpg archive/train\doom\v7amxql6t3g11.jpg archive/train\doom\v9y9qpd8qvs41.jpg archive/train\doom\v57o8itwodu41.jpg archive/train\doom\v569zvaf07v41.jpg archive/train\doom\v688k3qkqbr41.jpg archive/train\doom\vdihreplg1r41.jpg archive/train\doom\veS4M8Y.jpg archive/train\doom\vhupbtb1cl941.jpg archive/train\doom\vi0g4y1mqdw41.jpg archive/train\doom\vregcwzgwbz41.jpg archive/train\doom\vs69cz8yjmq21.jpg archive/train\doom\vsb14z3r7rv41.jpg archive/train\doom\vskie1n4gvn41.jpg archive/train\doom\w0ol3080hn441.jpg archive/train\doom\w1vox5zensw41.jpg archive/train\doom\w2awzpenk7w41.jpg archive/train\doom\w5dtr3im00331.jpg archive/train\doom\w6aj60c8f0d41.jpg archive/train\doom\w7mvqot5kq231.jpg archive/train\doom\w8q5y4u2cdd41.jpg archive/train\doom\w8wnko9hu3r41.jpg archive/train\doom\w97n50dhnpz41.jpg archive/train\doom\wbomjywzfoy31.jpg archive/train\doom\wbtr194ex3931.jpg archive/train\doom\wczt0ehgopq41.jpg archive/train\doom\wflxqgz693h31.jpg archive/train\doom\wggphbkotup41.jpg archive/train\doom\whhx912sz0p41.jpg archive/train\doom\whlvc5rxlgr41.jpg archive/train\doom\witbnf67ghs41.jpg archive/train\doom\wk3aqt5yhes41.jpg archive/train\doom\wk5mpgf8t9u41.jpg archive/train\doom\wkf1pd2idgi41.jpg archive/train\doom\wkg6sfiiuu151.jpg archive/train\doom\wl44g2wlxfr41.jpg archive/train\doom\wmu2ywi24qo41.jpg archive/train\doom\wsc5opg8bll31.jpg archive/train\doom\wuw4g2c9xbt41.jpg archive/train\doom\wxt7hv0pkjf31.jpg archive/train\doom\wys1i5ksyeo41.jpg archive/train\doom\x8fp82eap3251.jpg archive/train\doom\X9WDK1v.jpg archive/train\doom\xf43sru5faw41.jpg archive/train\doom\xfbqu878xpt41.jpg archive/train\doom\xg05ujnyv2q41.jpg archive/train\doom\xhnxiqkcq0i41.jpg archive/train\doom\xiao5cscb4y11.jpg archive/train\doom\xiy2r5a551q41.jpg archive/train\doom\xj7foa15qi051.jpg archive/train\doom\xpl2xw612jp41.jpg archive/train\doom\xrsnoj7w2bg41.jpg archive/train\doom\xzo0ohohw3k21.jpg archive/train\doom\y2aohqgeggp21.jpg archive/train\doom\y5pddy7h16x41.jpg archive/train\doom\y5salhq8wat21.jpg archive/train\doom\y583nja0mmh41.jpg archive/train\doom\ya9ltc4hw6s41.jpg archive/train\doom\yb7qrsmshap41.jpg archive/train\doom\ymfw0xg1k2k41.jpg archive/train\doom\yn6cjb195gs41.jpg archive/train\doom\ysb5015rkio41.jpg archive/train\doom\ytkmqt7easd41.jpg archive/train\doom\yvqwrjmiucm31.jpg archive/train\doom\ywagbnqdapd41.jpg archive/train\doom\ywwl2cxebqo41.jpg archive/train\doom\yyd4y5v6xmo41.jpg archive/train\doom\z02shvyzxgo41.jpg archive/train\doom\z2foac1wlqs41.jpg archive/train\doom\z5vhgxdvyg641.jpg archive/train\doom\z976g4uivsm41.jpg archive/train\doom\zc4oh3swdof41.jpg archive/train\doom\zc7wdrmplrn41.jpg archive/train\doom\zf9vh4q8r2431.jpg archive/train\doom\zfou45lxfop41.jpg archive/train\doom\zgvl9dnuc4o41.jpg archive/train\doom\zhmkpsl13hx41.jpg archive/train\doom\zj71r5aymh031.jpg archive/train\doom\zomuo178p6p41.jpg archive/train\doom\zq983ilrwza41.jpg archive/train\doom\zqinjaqssci41.jpg archive/train\doom\zrh0uz2v40m41.jpg archive/train\doom\zt2fzod1ylt41.jpg archive/train\doom\zuxfcgztdk251.jpg archive/train\doom\zvfo5ohcuto41.jpg archive/train\doom\zybq4gjsv2x41.jpg
train_images = np.array(train_images)
train_labels = np.array(train_labels)
#repeating the steps above, this time for the training data
#Initialize lists to capture testing data/labels
test_images = []
test_labels = []
for directory_path in glob.glob("archive/test/*"):
label = directory_path.split("\\")[-1]
print(label)
for img_path in glob.glob(os.path.join(directory_path, "*.jpg")):
print(img_path)
img = cv2.imread(img_path, cv2.IMREAD_COLOR)
img = cv2.resize(img, (size, size)) #using open cv2 to resize images
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) #and change the color from BGR to RGB
test_images.append(img)
test_labels.append(label)
r41.jpg archive/test\animal_crossing\0mzs9f0wb8z41.jpg archive/test\animal_crossing\0ozodkocirw41.jpg archive/test\animal_crossing\0wovk4f2v0h41.jpg archive/test\animal_crossing\0yotitpwxht41.jpg archive/test\animal_crossing\1be6ge0vqrx41.jpg archive/test\animal_crossing\1hvci9xecgm41.jpg archive/test\animal_crossing\1if48k12e1q41.jpg archive/test\animal_crossing\1iydjh1w9xz41.jpg archive/test\animal_crossing\1jsic9i2wmu41.jpg archive/test\animal_crossing\1kool8vkq0r41.jpg archive/test\animal_crossing\1m4kgui15us41.jpg archive/test\animal_crossing\1mau9ybffiq41.jpg archive/test\animal_crossing\1nj60xs06y151.jpg archive/test\animal_crossing\1ppdvul5ll051.jpg archive/test\animal_crossing\1qcffna4czr41.jpg archive/test\animal_crossing\1vy8abm.jpg archive/test\animal_crossing\2c0drcqw07151.jpg archive/test\animal_crossing\2eet6z805a251.jpg archive/test\animal_crossing\2ehmq0fjpj051.jpg archive/test\animal_crossing\2g1c09whuqq41.jpg archive/test\animal_crossing\2ir6nzse8tt41.jpg archive/test\animal_crossing\2jjk7qjqrok41.jpg archive/test\animal_crossing\2mfsv2okrlw41.jpg archive/test\animal_crossing\2v9ke0u7u3251.jpg archive/test\animal_crossing\2z1iwjt5f4o41.jpg archive/test\animal_crossing\3ffya37h56v41.jpg archive/test\animal_crossing\3ioh6div1gx41.jpg archive/test\animal_crossing\3knczrzj74s41.jpg archive/test\animal_crossing\3lv88stn0xy41.jpg archive/test\animal_crossing\3nrt721qhcu41.jpg archive/test\animal_crossing\3q66zq2et8v41.jpg archive/test\animal_crossing\3qn87hrl2s051.jpg archive/test\animal_crossing\3tp6k4rcpxw41.jpg archive/test\animal_crossing\3u4cqdipdjx41.jpg archive/test\animal_crossing\3u5v8o3hbus41.jpg archive/test\animal_crossing\3wkpNSV.jpg archive/test\animal_crossing\3xfc3u4woq051.jpg archive/test\animal_crossing\4ch49n7ggo251.jpg archive/test\animal_crossing\4d1njzkqe6w41.jpg archive/test\animal_crossing\4gocp91yv4y41.jpg archive/test\animal_crossing\4jl524vvhpo41.jpg archive/test\animal_crossing\4lhszcvq0i251.jpg archive/test\animal_crossing\4m4bnqg4ofs41.jpg archive/test\animal_crossing\4rccqx85b3w31.jpg archive/test\animal_crossing\4s7pypxlsd051.jpg archive/test\animal_crossing\4w9dwthe38051.jpg archive/test\animal_crossing\4wexc24oxs051.jpg archive/test\animal_crossing\4z78v30g4dy41.jpg archive/test\animal_crossing\5d739cp70pp41.jpg archive/test\animal_crossing\5fqz3vkvw8q41.jpg archive/test\animal_crossing\5i0u3dtau4a31.jpg archive/test\animal_crossing\5ibkz90rpdp21.jpg archive/test\animal_crossing\5izbphlfqey41.jpg archive/test\animal_crossing\5lhnu5wkaws41.jpg archive/test\animal_crossing\5m3ii7q9x9p41.jpg archive/test\animal_crossing\5mal6lvkrmx41.jpg archive/test\animal_crossing\5n2rzgxc14151.jpg archive/test\animal_crossing\5nf65gq24gw41.jpg archive/test\animal_crossing\5qwujo8q42w41.jpg archive/test\animal_crossing\5r07rfqoaor21.jpg archive/test\animal_crossing\5t0572mhcnt41.jpg archive/test\animal_crossing\5yu10oi529u41.jpg archive/test\animal_crossing\06wprmd2m7u41.jpg archive/test\animal_crossing\6bkg3ot4xi151.jpg archive/test\animal_crossing\6ehb04xvber41.jpg archive/test\animal_crossing\6elwirqlh7v41.jpg archive/test\animal_crossing\6gkc4urrm2l41.jpg archive/test\animal_crossing\6i7942mo4ow41.jpg archive/test\animal_crossing\6iqzslgyvzt41.jpg archive/test\animal_crossing\6laytxuzxvq41.jpg archive/test\animal_crossing\6obmy1162po41.jpg archive/test\animal_crossing\6r8i57hmzk151.jpg archive/test\animal_crossing\6rkbh008q8p41.jpg archive/test\animal_crossing\6snk59y7os251.jpg archive/test\animal_crossing\6ugubymg6fv41.jpg archive/test\animal_crossing\6w8x05b93xs41.jpg archive/test\animal_crossing\6wh1dwko5ov41.jpg archive/test\animal_crossing\6zgeznjf9jo41.jpg archive/test\animal_crossing\07nqetuqw9w41.jpg archive/test\animal_crossing\07xjd27c8uy41.jpg archive/test\animal_crossing\7ajg3ewgi4z41.jpg archive/test\animal_crossing\7byvq15say051.jpg archive/test\animal_crossing\7iy5dj4aqb251.jpg archive/test\animal_crossing\7lzcc2z1r2x41.jpg archive/test\animal_crossing\7o0coqjaqfo41.jpg archive/test\animal_crossing\7ol380jp21u41.jpg archive/test\animal_crossing\7roy7fr5giy41.jpg archive/test\animal_crossing\7u38870a0jv41.jpg archive/test\animal_crossing\7uwebefw0fp41.jpg archive/test\animal_crossing\7v8k0iybpsw41.jpg archive/test\animal_crossing\7xcbunxbv2u41.jpg archive/test\animal_crossing\7yc49g2qdsz41.jpg archive/test\animal_crossing\8aGPHwF.jpg archive/test\animal_crossing\8cekv2yjjv251.jpg archive/test\animal_crossing\8cpsi2u6tps41.jpg archive/test\animal_crossing\8cyvvz7asbo41.jpg archive/test\animal_crossing\8d04ur941iq41.jpg archive/test\animal_crossing\8f81b6uhcow41.jpg archive/test\animal_crossing\8fu1s5n87fs41.jpg archive/test\animal_crossing\8jdhlhbbuap41.jpg archive/test\animal_crossing\8lgc3zd9b9151.jpg archive/test\animal_crossing\8luej2xnj8o41.jpg archive/test\animal_crossing\8m741cmscov41.jpg archive/test\animal_crossing\8MCVboY.jpg archive/test\animal_crossing\8nv4qoa6fpy41.jpg archive/test\animal_crossing\8oi70e2qa4z41.jpg archive/test\animal_crossing\8sbsurwh7ou41.jpg archive/test\animal_crossing\8sr2fzd41aq41.jpg archive/test\animal_crossing\8wcem3qh8de41.jpg archive/test\animal_crossing\9f1ncxkdrtp41.jpg archive/test\animal_crossing\9f43oniyalr41.jpg archive/test\animal_crossing\9ic44op0xyu41.jpg archive/test\animal_crossing\9kfeii1ods051.jpg archive/test\animal_crossing\9mm78thz7jz41.jpg archive/test\animal_crossing\9nkshyrrm0u41.jpg archive/test\animal_crossing\9qfgjoud73s41.jpg archive/test\animal_crossing\9s3q7mmyed051.jpg archive/test\animal_crossing\9ws1onrchqu41.jpg archive/test\animal_crossing\9y8d7j0n1w151.jpg archive/test\animal_crossing\9z7t24i8ddw41.jpg archive/test\animal_crossing\10pvsht7efq41.jpg archive/test\animal_crossing\12g0suysuso41.jpg archive/test\animal_crossing\15dbc15lp2s41.jpg archive/test\animal_crossing\16zmxxo5fl251.jpg archive/test\animal_crossing\23gxv6wtxzu41.jpg archive/test\animal_crossing\23tuxt9bkev41.jpg archive/test\animal_crossing\27b4j8cwust41.jpg archive/test\animal_crossing\29ma2prvq9q41.jpg archive/test\animal_crossing\33s6x3zwrqz41.jpg archive/test\animal_crossing\34maiemumfo41.jpg archive/test\animal_crossing\34v33rzwnmz41.jpg archive/test\animal_crossing\35whcsia1kz41.jpg archive/test\animal_crossing\36zcf5oey2u41.jpg archive/test\animal_crossing\38axyof8eat41.jpg archive/test\animal_crossing\43pp3t31dzp41.jpg archive/test\animal_crossing\45kdvxyd2kq41.jpg archive/test\animal_crossing\50fbkx2nr6y41.jpg archive/test\animal_crossing\51cjlvkjesx41.jpg archive/test\animal_crossing\52kqzfbdza251.jpg archive/test\animal_crossing\62rx65xcwgp41.jpg archive/test\animal_crossing\63ns615okdy41.jpg archive/test\animal_crossing\68u6ah79mjq41.jpg archive/test\animal_crossing\68xk29grdw251.jpg archive/test\animal_crossing\74p1pze5l4051.jpg archive/test\animal_crossing\74wa4k1bk2051.jpg archive/test\animal_crossing\75xm3xzxfke41.jpg archive/test\animal_crossing\77t4q1bouzp41.jpg archive/test\animal_crossing\79e7jro755251.jpg archive/test\animal_crossing\086tektpmp051.jpg archive/test\animal_crossing\89ydqw3k2cr41.jpg archive/test\animal_crossing\89yxnklxkds41.jpg archive/test\animal_crossing\92crm8xnhdv41.jpg archive/test\animal_crossing\93nvxauhqx051.jpg archive/test\animal_crossing\94j41nmr2z051.jpg archive/test\animal_crossing\95itt33yxdv41.jpg archive/test\animal_crossing\95senj68juz41.jpg archive/test\animal_crossing\170bp0mkvju41.jpg archive/test\animal_crossing\176wf6duetq41.jpg archive/test\animal_crossing\0177myxmpiq41.jpg archive/test\animal_crossing\241lqn25dl151.jpg archive/test\animal_crossing\382c1abqgbw41.jpg archive/test\animal_crossing\530whgrnajx41.jpg archive/test\animal_crossing\624i2pna97q41.jpg archive/test\animal_crossing\800d1j0d4l251.jpg archive/test\animal_crossing\829OQv9.jpg archive/test\animal_crossing\870ng9avw8o41.jpg archive/test\animal_crossing\2670q4hbi1t41.jpg archive/test\animal_crossing\2731mrdf6y151.jpg archive/test\animal_crossing\8817or55wvs41.jpg archive/test\animal_crossing\9101cbvcjar41.jpg archive/test\animal_crossing\9278w203q2y41.jpg archive/test\animal_crossing\a2vvzng7g7v41.jpg archive/test\animal_crossing\a6m1x4fopez41.jpg archive/test\animal_crossing\a07q3sykzkz41.jpg archive/test\animal_crossing\a7esrnrg75151.jpg archive/test\animal_crossing\a7gup5ll2js41.jpg archive/test\animal_crossing\a85jxzlw1vy41.jpg archive/test\animal_crossing\aamjnmrm65i41.jpg archive/test\animal_crossing\ab92nh329mz41.jpg archive/test\animal_crossing\abx0demjy9x41.jpg archive/test\animal_crossing\ac7l2g40fi051.jpg archive/test\animal_crossing\ae4luzenhzw41.jpg archive/test\animal_crossing\ahnq9g4fh2p41.jpg archive/test\animal_crossing\ak4jo5tt13o41.jpg archive/test\animal_crossing\ak680mftdst41.jpg archive/test\animal_crossing\akz8t6x7e6u41.jpg archive/test\animal_crossing\al0shs07imx41.jpg archive/test\animal_crossing\AlACNko.jpg archive/test\animal_crossing\amwui5wy0ax41.jpg archive/test\animal_crossing\anwz7xe9cgr41.jpg archive/test\animal_crossing\aq1k09rfw0o41.jpg archive/test\animal_crossing\atld4xbdnyv41.jpg archive/test\animal_crossing\auevt60qvux41.jpg archive/test\animal_crossing\av0qy2xinfs41.jpg archive/test\animal_crossing\az7tuy96onn41.jpg archive/test\animal_crossing\azbgy4ku14v41.jpg archive/test\animal_crossing\b0kktbrcl6w41.jpg archive/test\animal_crossing\b5x6s7la21v41.jpg archive/test\animal_crossing\b6yc9yvet5251.jpg archive/test\animal_crossing\b9hfzol3nut41.jpg archive/test\animal_crossing\bccmkc303cs41.jpg archive/test\animal_crossing\bdby55yatls41.jpg archive/test\animal_crossing\bfyu5244pku41.jpg archive/test\animal_crossing\bhhnp13bfs151.jpg archive/test\animal_crossing\bm2laxad7fw41.jpg archive/test\animal_crossing\bmw5e4nk13n41.jpg archive/test\animal_crossing\bosfo9mtxix41.jpg archive/test\animal_crossing\brwlzwlbonv41.jpg archive/test\animal_crossing\btoloosiwys41.jpg archive/test\animal_crossing\buqv37zfu0w41.jpg archive/test\animal_crossing\bv8fzjyrluu41.jpg archive/test\animal_crossing\bvrn2ehkxvo41.jpg archive/test\animal_crossing\bz67JdS.jpg archive/test\animal_crossing\c01cwq2a9cz41.jpg archive/test\animal_crossing\c5cojm0drrz41.jpg archive/test\animal_crossing\c6h37ln0xlt41.jpg archive/test\animal_crossing\c7m1nm6rckz41.jpg archive/test\animal_crossing\c07285vt2ay41.jpg archive/test\animal_crossing\c80236ddahq41.jpg archive/test\animal_crossing\cc4rqooxtx051.jpg archive/test\animal_crossing\ccm3xnj2nzy41.jpg archive/test\animal_crossing\ccx8k056jto41.jpg archive/test\animal_crossing\cdkj75ly1st41.jpg archive/test\animal_crossing\ceehhoo6j8w41.jpg archive/test\animal_crossing\cfby0zxfqdw41.jpg archive/test\animal_crossing\chx0tdaihzt41.jpg archive/test\animal_crossing\cjpeg8izgsy41.jpg archive/test\animal_crossing\ckdgaab9d6v41.jpg archive/test\animal_crossing\ckvouhy857051.jpg archive/test\animal_crossing\cmrtvs5id7151.jpg archive/test\animal_crossing\coi10myq57r41.jpg archive/test\animal_crossing\conz6tr08mv41.jpg archive/test\animal_crossing\cq0pmqg8pe151.jpg archive/test\animal_crossing\crtltmrgkox41.jpg archive/test\animal_crossing\cz5092f3hz051.jpg archive/test\animal_crossing\d0p66nf7eyx41.jpg archive/test\animal_crossing\d6nm77zbqqn41.jpg archive/test\animal_crossing\d6uyw03yb0p41.jpg archive/test\animal_crossing\db254ohw6to41.jpg archive/test\animal_crossing\dbdqarquvaq41.jpg archive/test\animal_crossing\dbhg5nknpgr41.jpg archive/test\animal_crossing\dejy3yyz3y151.jpg archive/test\animal_crossing\DixTYFM.jpg archive/test\animal_crossing\dn1ymm9e9pn41.jpg archive/test\animal_crossing\dosv6e5lib051.jpg archive/test\animal_crossing\ds6c2bngovt41.jpg archive/test\animal_crossing\dsu5z5u3vsu41.jpg archive/test\animal_crossing\dxfqi7qxl9k41.jpg archive/test\animal_crossing\dxkeutjrcvr41.jpg archive/test\animal_crossing\e6brxe61cyw41.jpg archive/test\animal_crossing\e7gtx82nayw41.jpg archive/test\animal_crossing\e9ir5bpuh2w41.jpg archive/test\animal_crossing\e193r4coxto41.jpg archive/test\animal_crossing\ebb0wuj1y9o41.jpg archive/test\animal_crossing\ebj2fodndk251.jpg archive/test\animal_crossing\ebr019iyv5x41.jpg archive/test\animal_crossing\edzmjwz6psy41.jpg doom archive/test\doom\clxc6b100ws21.jpg archive/test\doom\0al47gmk8xs41.jpg archive/test\doom\0c5l0ss550p41.jpg archive/test\doom\0ecs6bzy49051.jpg archive/test\doom\0i7z32his4251.jpg archive/test\doom\0iihl37qztn41.jpg archive/test\doom\0oinnuls0gp41.jpg archive/test\doom\0p7edblbk8p41.jpg archive/test\doom\0p43pkc3jpn41.jpg archive/test\doom\0q0bg5pzgus41.jpg archive/test\doom\0t3s0u8rw7m41.jpg archive/test\doom\0tdpbogptdi41.jpg archive/test\doom\0u4sc9a1zp831.jpg archive/test\doom\0vvlmn9h7nu41.jpg archive/test\doom\0wovk4f2v0h41.jpg archive/test\doom\01vmlf4buap41.jpg archive/test\doom\1desbznqwep41.jpg archive/test\doom\1gy9hfyzkmp31.jpg archive/test\doom\1j7g7e4pp2f31.jpg archive/test\doom\1kunist4yeq31.jpg archive/test\doom\1odwlt3080p41.jpg archive/test\doom\1or123myt6151.jpg archive/test\doom\1snibvl6zpp41.jpg archive/test\doom\1uhs4gafad731.jpg archive/test\doom\1uifkvj06sk41.jpg archive/test\doom\1vg7jk65tez31.jpg archive/test\doom\1vumfgyx74o41.jpg archive/test\doom\1xlmtsssnf341.jpg archive/test\doom\1ysls0bwut251.jpg archive/test\doom\2al5h2tbpub21.jpg archive/test\doom\2chcpwqx8ho41.jpg archive/test\doom\2dfxle74a4u41.jpg archive/test\doom\2jkzeie0jcx41.jpg archive/test\doom\2kc00ewaazv41.jpg archive/test\doom\2qu6fck1ion41.jpg archive/test\doom\2ravrz45dhv41.jpg archive/test\doom\2rEmbwo.jpg archive/test\doom\2w2bmlvuf2i11.jpg archive/test\doom\2xg56b1ilme31.jpg archive/test\doom\2zrwo9apu0q41.jpg archive/test\doom\003kprvwysr41.jpg archive/test\doom\3bd13tz2i7q41.jpg archive/test\doom\3ii4tgihg2s41.jpg archive/test\doom\3iz296yovfs41.jpg archive/test\doom\3j6cs2mqujv41.jpg archive/test\doom\3kb6v6y9wfw41.jpg archive/test\doom\3l1pw0g64qo41.jpg archive/test\doom\3sgam7u8gaj41.jpg archive/test\doom\3t8w4mbjhs051.jpg archive/test\doom\3vtmpbso10w11.jpg archive/test\doom\3x76fnf5t5p41.jpg archive/test\doom\3xwa9qbnv0u41.jpg archive/test\doom\3z7tpqi98et41.jpg archive/test\doom\4c6ziha70mu41.jpg archive/test\doom\4igxwxi03or41.jpg archive/test\doom\4lcorvjpgwu41.jpg archive/test\doom\4mpf2rkgftp41.jpg archive/test\doom\4nese5zm7ye21.jpg archive/test\doom\4r4tqywnb7u41.jpg archive/test\doom\4sxahrwri9641.jpg archive/test\doom\4ttnvnb0iq051.jpg archive/test\doom\4xdnyq2yb3k31.jpg archive/test\doom\5bshdgj5zlq41.jpg archive/test\doom\5ccvhjp6jhk41.jpg archive/test\doom\5ncnb04v26t41.jpg archive/test\doom\5piuumui8ln41.jpg archive/test\doom\5ugtlptn0o631.jpg archive/test\doom\5v3ruv26gzn41.jpg archive/test\doom\5vcptmnsu0s41.jpg archive/test\doom\6bx5outyw7p41.jpg archive/test\doom\6ec5jyr57jo41.jpg archive/test\doom\6ife5p6ecxd41.jpg archive/test\doom\6ijl2n0tt1c21.jpg archive/test\doom\6iu55lbl3pj41.jpg archive/test\doom\6k0cx05ktx441.jpg archive/test\doom\6mfhsgu63hx41.jpg archive/test\doom\6nqw8yqrbcl41.jpg archive/test\doom\6nr896pfw2t31.jpg archive/test\doom\6nu1yps59s051.jpg archive/test\doom\6qwnlgi3osh31.jpg archive/test\doom\6qzlx9s5ha431.jpg archive/test\doom\6tHQ2Ns.jpg archive/test\doom\6wgiymw7qmp41.jpg archive/test\doom\6wqdw6iyzok31.jpg archive/test\doom\6xbpep0g42s41.jpg archive/test\doom\07fili2nses41.jpg archive/test\doom\7b2m31wofk641.jpg archive/test\doom\7c3lyx28tzt41.jpg archive/test\doom\7gh14vki09p41.jpg archive/test\doom\7o1uv92pf4s41.jpg archive/test\doom\7sw501vultm31.jpg archive/test\doom\7vo8ybo1skm41.jpg archive/test\doom\7vpp45mytrn41.jpg archive/test\doom\8bcs70vryno41.jpg archive/test\doom\8cjv9tdlnzs41.jpg archive/test\doom\8eDHQqS.jpg archive/test\doom\8fto7ucz26641.jpg archive/test\doom\8i04m7bwfo051.jpg archive/test\doom\8iOjAWe.jpg archive/test\doom\8kea3k0a99o41.jpg archive/test\doom\8mpv1w6hv2p41.jpg archive/test\doom\8otyi9hamct41.jpg archive/test\doom\8rgk28sk63a31.jpg archive/test\doom\8s68yn8wi6b41.jpg archive/test\doom\8si5yl8cu2541.jpg archive/test\doom\8v7vsv172t051.jpg archive/test\doom\8vc9cwbj34251.jpg archive/test\doom\8vpwqkhipi151.jpg archive/test\doom\8w85afmqwtq41.jpg archive/test\doom\8wr5wde41ht41.jpg archive/test\doom\8zvfzi0w2og31.jpg archive/test\doom\9ctuefjh1rm41.jpg archive/test\doom\9dlgye9ecep41.jpg archive/test\doom\9fd5hiealsu41.jpg archive/test\doom\9ht6b1kmf6731.jpg archive/test\doom\9itb2zwk0bo41.jpg archive/test\doom\9jnzs825cem21.jpg archive/test\doom\9mpuxs9oo3p41.jpg archive/test\doom\9my0pa9jf5u41.jpg archive/test\doom\9n53e3cc2qo41.jpg archive/test\doom\9n773cwapbo41.jpg archive/test\doom\9ti85wdzgfs41.jpg archive/test\doom\9tqxpwuw5dq41.jpg archive/test\doom\9zd127wsu2n21.jpg archive/test\doom\14rcw19xb0h41.jpg archive/test\doom\18t04erwchn41.jpg archive/test\doom\23t8wopwtts41.jpg archive/test\doom\24u6bnam9by41.jpg archive/test\doom\26a97ocpvmw41.jpg archive/test\doom\27y01mezsly21.jpg archive/test\doom\31gdidag9it41.jpg archive/test\doom\34a2yor313251.jpg archive/test\doom\40p91imiaz051.jpg archive/test\doom\41sqdgyaj4o41.jpg archive/test\doom\45lkue67w9a31.jpg archive/test\doom\46idi7ua0ma41.jpg archive/test\doom\53k85690bc741.jpg archive/test\doom\54pixwaa0y331.jpg archive/test\doom\58exll0jx5241.jpg archive/test\doom\59f543h0zfp41.jpg archive/test\doom\60m316tz31741.jpg archive/test\doom\62k1736jpez41.jpg archive/test\doom\70j7urf9t1u41.jpg archive/test\doom\71mvam92e7f41.jpg archive/test\doom\72twsly4v7i41.jpg archive/test\doom\73ysdwm7lx431.jpg archive/test\doom\76kutc50hbo41.jpg archive/test\doom\77fw2i46wfn41.jpg archive/test\doom\78sgcpeiljw41.jpg archive/test\doom\80wln8jiyso41.jpg archive/test\doom\84favyra9xq41.jpg archive/test\doom\89lbf73li2v41.jpg archive/test\doom\96d2rfs8mh431.jpg archive/test\doom\180mf4lt79l31.jpg archive/test\doom\280hldd1i5251.jpg archive/test\doom\373ovvidqmx41.jpg archive/test\doom\733kr2ixqd541.jpg archive/test\doom\806yecxwtms41.jpg archive/test\doom\928z9h23sp251.jpg archive/test\doom\1869awy2j1p41.jpg archive/test\doom\3615jytspzg31.jpg archive/test\doom\4278caqzhui31.jpg archive/test\doom\5203c54f0jo31.jpg archive/test\doom\5316crymj9x41.jpg archive/test\doom\7810sp2lwun41.jpg archive/test\doom\7893ogdapdz41.jpg archive/test\doom\9636gdkoj8d21.jpg archive/test\doom\76052iu7zdt41.jpg archive/test\doom\a4smr48spjz41.jpg archive/test\doom\a4xv8abyimo21.jpg archive/test\doom\a6qi2w8lsv531.jpg archive/test\doom\a07mti5yvol41.jpg archive/test\doom\a9aee4s4nmo41.jpg archive/test\doom\a46ep8c89jq41.jpg archive/test\doom\a56ql61z32g41.jpg archive/test\doom\a3578oj6dkw41.jpg archive/test\doom\ab4rer53uug31.jpg archive/test\doom\ajbtix5go3c31.jpg archive/test\doom\ak3j1dwwqpo41.jpg archive/test\doom\aL2SqkY.jpg archive/test\doom\alxs1nonx5o31.jpg archive/test\doom\am44icg7y9r41.jpg archive/test\doom\ao9x8kxulax41.jpg archive/test\doom\aq0xqqjujnr31.jpg archive/test\doom\au8drs67x7y41.jpg archive/test\doom\austmhcaccs41.jpg archive/test\doom\awi18dqmf7r41.jpg archive/test\doom\axvx69l9xau41.jpg archive/test\doom\ayr5bbjy0oo41.jpg archive/test\doom\b7kjl55n6s131.jpg archive/test\doom\bczujeyv9ur41.jpg archive/test\doom\bf9ojmz86vj31.jpg archive/test\doom\bfsd4zxgcww41.jpg archive/test\doom\bizvfgf5js431.jpg archive/test\doom\bktw15fadjv41.jpg archive/test\doom\bn8h36891az41.jpg archive/test\doom\boz44y6cffk41.jpg archive/test\doom\bt1uub7yac631.jpg archive/test\doom\buum2l6wkxs11.jpg archive/test\doom\buwnc37azvo41.jpg archive/test\doom\bvpbvf68v7p41.jpg archive/test\doom\by5d7vhomhl41.jpg archive/test\doom\bz8gh35gwsv41.jpg archive/test\doom\bzfflut29q841.jpg archive/test\doom\bzyl5fpj00p41.jpg archive/test\doom\c1dkr5y7qwy41.jpg archive/test\doom\c2ghxijo1qm41.jpg archive/test\doom\c6gih293mzr41.jpg archive/test\doom\c6kwhhh5n4q41.jpg archive/test\doom\c7ny6mujkex41.jpg archive/test\doom\c40r8y1lkvm41.jpg archive/test\doom\c79oubyo5eo41.jpg archive/test\doom\c253iqmbjhu41.jpg archive/test\doom\c857636.jpg archive/test\doom\cahmu5f1x2w41.jpg archive/test\doom\cahoikmgibc41.jpg archive/test\doom\cdbi9isv54n41.jpg archive/test\doom\cg1wru6phrd31.jpg archive/test\doom\cgj4oeyh2jr41.jpg archive/test\doom\cgsoj0zurx231.jpg archive/test\doom\ch08eanwsxy21.jpg archive/test\doom\cjwwmpl7w9k41.jpg
#convert lists to arrays (easier to work with)
test_images = np.array(train_images)
test_labels = np.array(train_labels)
#encode labels from string to integers
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(test_labels)
test_labels_encoded = le.transform(test_labels)
le.fit(train_labels)
train_labels_encoded = le.transform(train_labels)
#copying data into new variables. These variable are labeled more accuratly for model training and will make the next steps easier to comprehend.
x_train, y_train, x_test, y_test = train_images, train_labels_encoded, test_images, test_labels_encoded
#4D array
x_test.shape
(795, 256, 256, 3)
#4D array
x_train.shape
(795, 256, 256, 3)
#currently, the input data is 4-dimensional. The data needs to be flattened into 2 dimensions.
# source: https://stackoverflow.com/questions/57187680/how-to-resolve-valueerror-found-array-with-dim-4-estimator-expected-2
x_train = x_train.reshape(795,3*256*256)
x_test = x_test.reshape(795,3*256*256)
#rescaling pixel values between 0 and 1. (normalizing)
#x_train, x_test = x_train / 255.0, x_test / 255.0
# Create Decision Tree classifer object
clf = DecisionTreeClassifier()
# Train Decision Tree Classifer
clf = clf.fit(x_train,y_train)
#Predict the response for test dataset
y_pred = clf.predict(x_test)
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
Accuracy: 1.0
classification rate of 100%, which does not seem possible! I used the same method of creating and formatting input data as I did when I ran the XGBoost model (which also got 100% accuracy), leading me to believe that there is some sort of flaw with data input. Whether it be mis-classification or some sort of give away within the data as to what category an image belongs to.
from sklearn.tree import export_graphviz
#from sklearn.externals.six import StringIO
from IPython.display import Image
import pydotplus
from six import StringIO
dot_data = StringIO()
export_graphviz(clf, out_file=dot_data,
filled=True, rounded=True,
special_characters=True,feature_names=None,class_names=['0','1'])
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('ACorDOOMtree.png')
Image(graph.create_png())
Since this project is about image classification, I decided that logistic regression was not a good fit. When using regression, the output variable is expected to be a continuous numerical value. With that being said, log regression is used for solving classification problems despite being a form of regression. With log regression, the target variable becomes categorical since it will have a binary output (classified as either 0 or 1). Using the Sigmoid function (which has values both very close to 0 and very close to 1 on the 'S'-shaped line), a model can predict whether or not an input is 0 or 1 depending on the threshold that is determined.
Logisitc regression is no the best fit for this project simply because neural networks are so much better for image classification. In a sense, log regression is basically a single-layer neural network. With that in mind, log regression would make for a similar, but less accurate CNN model.
Overall, between all of the successful methods, XGBoost and the decision tree classification were the most accurate. With that being said, both of those methods had an accuracy of 100% which is a bit unrealistic to me, leading me to believe that there was some underlying data that gave away the correct label for any given image. If I had more time, I would try and figure out what might be causing the accuracy to be so high. Lastly, the keras neural network reached an accuracy of about 78% which seemed much more realistic. The data input method for keras was much more straight foward, and much easier to implement leaving me with less room for error and possibly giving me support for my claim that the other 2 successful methods had some sort of fault during data input. The keras neural network also took the longest time to complete at around 30 minutes for 10 epochs, and given more time to train the model on more epochs, the accuracy would have increased.